Given a binary tree containing digits from
0-9 only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path
1->2->3 which represents the number 123.
Find the total sum of all root-to-leaf numbers.
For example,
1 / \ 2 3
The root-to-leaf path
The root-to-leaf path
1->2 represents the number 12.The root-to-leaf path
1->3 represents the number 13.
Return the sum = 12 + 13 =
25.
用递归的方法来做, 把根节点到叶子节点所有值加起来, 递归条件是把当前的sum*10 加上子节点的值进行下一轮递归
结束条件是到子节点是空的时候就返回0
算法的本质是一次先序遍历,所以时间是O(n),空间是栈大小,O(logn)。
算法的本质是一次先序遍历,所以时间是O(n),空间是栈大小,O(logn)。
public class Solution {
public int sumNumbers(TreeNode root) {
return helper(root, 0);
}
public int helper(TreeNode root, int sum) {
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return sum * 10 + root.val;
}
int left = helper(root.left, sum*10 + root.val);
int right = helper(root.right, sum*10 + root.val);
return left + right;
}
}
没有评论:
发表评论