Sum of Root To Leaf Binary Numbers (E)
题目
Given a binary tree, each node has value 0
or 1
. Each root-to-leaf path represents a binary number starting with the most significant bit. For example, if the path is 0 -> 1 -> 1 -> 0 -> 1
, then this could represent 01101
in binary, which is 13
.
For all leaves in the tree, consider the numbers represented by the path from the root to that leaf.
Return the sum of these numbers.
Example 1:
Input: [1,0,1,0,1,0,1]
Output: 22
Explanation: (100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22
Note:
- The number of nodes in the tree is between
1
and1000
. - node.val is
0
or1
. - The answer will not exceed
2^31 - 1
.
题意
给定一个二叉树,从根结点到叶结点的路径构成一个二进制数,求所有二进制数的和。
思路
直接dfs处理即可。
代码实现
Java
class Solution {
public int sumRootToLeaf(TreeNode root) {
return dfs(root, 0);
}
private int dfs(TreeNode root, int sum) {
sum = sum * 2 + root.val;
if (root.left == null && root.right == null) {
return sum;
} else if (root.left == null) {
return dfs(root.right, sum);
} else if (root.right == null) {
return dfs(root.left, sum);
} else {
return dfs(root.left, sum) + dfs(root.right, sum);
}
}
}