本文主要是介绍leetcode----129. Sum Root to Leaf Numbers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:
https://leetcode.com/problems/sum-root-to-leaf-numbers/
大意:
给定一棵树根节点root,求出从根节点到每个叶子节点路径上数字组成的十进制数的和。例子:
思路:
先序遍历,回溯。
遍历到一个节点时, 首先计算根节点到该节点路径上数字组成的十进制数,再判断当前节点是否为叶子节点即可。
函数外部保存一个变量sum用于记录根节点到每个叶子节点路径上数字组成的十进制数字的和。
代码:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {private int sum = 0;public int sumNumbers(TreeNode root) {if (root == null)return 0;dfs(root, 0);return sum;}private void dfs(TreeNode root, int val) {val = val * 10 + root.val;// 叶子节点if (root.left == null && root.right == null) {sum += val;return ;}if (root.left != null)dfs(root.left, val);if (root.right != null)dfs(root.right, val);}
}
结果:
结论:
很简单的一个回溯题。
这篇关于leetcode----129. Sum Root to Leaf Numbers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!