---
# System prepended metadata

title: 'LeetCode #129 [Sum Root to Leaf Numbers](https://leetcode.com/problems/sum-root-to-leaf-numbers/)'
tags: [Recursion, LeetCode, Medium, Tree]

---

###### tags: `LeetCode` `Tree` `Recursion` `Medium`
# LeetCode #129 [Sum Root to Leaf Numbers](https://leetcode.com/problems/sum-root-to-leaf-numbers/)

給你一個二元樹的根節點 root ，樹中每個節點都存放有一個 0 到 9 之間的數字。
每條從根節點到葉節點的路徑都代表一個數字：

例如，從根節點到葉節點的路徑 1 -> 2 -> 3 表示數字 123 。
計算從根節點到葉節點生成的 所有數字之和 。

葉節點 是指沒有子節點的節點。

---
每次把現有值傳下去, 到下一輪時把傳入參數的值乘以10再加上節點的值即可得到到該節點的總和值。

若節點為空則回傳0, 節點的值為左右子樹的和與節點本身的值中取較大者。

---
```
class Solution {
public:
    int sumNumbers(TreeNode* root) {
        return max(root->val, (helper(root->left, root->val)+helper(root->right,root->val)));
    }
    int helper(TreeNode* node, int sum){
        if(!node)return 0;
        sum=sum*10+node->val;;
        return max(sum,helper(node->left, sum)+helper(node->right,sum));
    }
};
```