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; } }
没有评论:
发表评论