[LeetCode] Sum of Root To Leaf Binary Number

아르당·2026년 3월 25일

LeetCode

목록 보기
222/254
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

이진 트리 root가 주어지고, 각 노드는 0 또는 1이다. root에서 leaf까지 각 경로는 최상위 비트부터 시작하는 이진수를 나타낸다.

  • 예를 들어, 경로가 0 -> 1 -> 1 -> 0 -> 1이면, 이진수로 01101, 즉 13을 나타낼 수 있다.

트리의 모든 리프 노드에 대해, 루트에서 해당 리프 노드까지의 경로가 나타내는 숫자들을 고려해라. 이 숫자들의 합을 반환해라.

Example

#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

Constraints

  • 트리의 노드의 수는 [1, 1000] 범위에 있다.
  • Node.val은 0 또는 1이다.

Solved

/**
 * 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);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글