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
1and1000. - node.val is
0or1. - 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);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/659.html
標籤:其他
上一篇:冪集問題
