Total Accepted: 69249
Total Submissions: 216443
Difficulty: Medium
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 1->2
represents the number 12
.
The root-to-leaf path 1->3
represents the number 13
.
Return the sum = 12 + 13 = 25
.
Subscribe to see which companies asked this question
Show Similar Problems
Have you met this question in a real interview?
Yes
No
求一棵二叉树所有从根到叶子所表示的数字的和。DFS深搜求解。
我的AC代码
public class SumRoottoLeafNumbers {
static int sum = 0;
public static void main(String[] args) {
TreeNode n1 = new TreeNode(9);
TreeNode n2 = new TreeNode(1);
n1.left = n2;
System.out.println(sumNumbers(n1));
}
public static int sumNumbers(TreeNode root) {
if(root == null) return 0;
sum = 0;
dfs(root, 0);
return sum;
}
private static void dfs(TreeNode root, int parent) {
if(root.left == null && root.right == null) {
sum += (parent * 10 + root.val);
return;
}
parent = parent * 10 + root.val;
if(root.left != null) dfs(root.left, parent);
if(root.right != null) dfs(root.right, parent);
}
}