題目: LeetCode - 1022. Sum of Root To Leaf Binary Numbers

題目說明

給一個 Binary Tree,從樹根到每片葉子中間包含的數字代表一串二進位的數字,求轉為十進位後的總和。

類似題目:LeetCode - 129 解題紀錄

解題思路

使用遞迴的概念遍歷整棵樹,sum 紀錄到目前的十進位總和,若是目前的 node 已經是葉子,直接回傳 sum,否則回傳 sumRootToLeaf(root->left, sum) + sumRootToLeaf(root->right, sum)

參考解法

1
2
3
4
5
6
7
8
9
class Solution {
public:
int sumRootToLeaf(TreeNode* root, int sum = 0) // add sum
{
if(!root) return 0;
sum = sum * 2 + root->val;
return !root->left && !root->right ? sum : sumRootToLeaf(root->left, sum) + sumRootToLeaf(root->right, sum);
}
};