Contents

leetcode 1022. Sum of Root To Leaf Binary Numbers [Easy]

題目敘述

https://assets.leetcode.com/uploads/2019/04/04/sum-of-root-to-leaf-binary-numbers.png

Input: root = [1, 0, 1, 0, 1, 0, 1]

Output: 22

Explanation: (100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22

給一個節點為 0 或者 1 的 binary tree,回傳從 root 為起點到各個 leaf 節點路徑組成二進位數的合。

解題紀錄

利用 DFS 去尋訪,如果 !root->left && !root->right 就代表到達 leaf,直接回傳算出來的值。

class Solution {
public:
    int sumRootToLeaf(TreeNode* root) {
        return solution(root, 0);
    }
    
    int solution(TreeNode *root, int bin) {
        if (!root) return 0;
        bin = (bin << 1) + root->val;
        if (!root->left && !root->right) return bin; 
        return solution(root->left, bin) + solution(root->right, bin);
    }
};