문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
이진 트리 root가 주어지고, 각 노드는 0 또는 1이다. root에서 leaf까지 각 경로는 최상위 비트부터 시작하는 이진수를 나타낸다.
트리의 모든 리프 노드에 대해, 루트에서 해당 리프 노드까지의 경로가 나타내는 숫자들을 고려해라. 이 숫자들의 합을 반환해라.
#1
Input: root = [1, 0, 1, 0, 1, 0, 1]
Output: 22
Explanation: (100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22
#2
Input: root = [0]
Output: 0
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int sumRootToLeaf(TreeNode root) {
return dfs(root, 0);
}
private int dfs(TreeNode node, int curr){
if(node == null){
return 0;
}
curr = curr * 2 + node.val;
if(node.left == null && node.right == null){
return curr;
}
return dfs(node.left, curr) + dfs(node.right, curr);
}
}