LeetCode 129. Sum Root to Leaf Numbers
You are given the root of a binary tree containing digits from 0 to 9 only.
Each root-to-leaf path in the tree represents a number.
For example, the root-to-leaf path 1 -> 2 -> 3 represents the number 123.
Return the total sum of all root-to-leaf numbers. Test cases are generated so that the answer will fit in a 32-bit integer.
A leaf node is a node with no children.
Example 1:
Input: root = [1,2,3]
Output: 25
Explanation:
The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.
Therefore, sum = 12 + 13 = 25.method: 回溯
每条根到叶子节点的路径都可以组成一个数字,求这些数字的和
简单的回溯,因为要检查是不是根节点,所以先确保不是空节点
int res;
void traversal(TreeNode *root, int num) {
    if (!root->left && !root->right) {
        res += num * 10 + root->val;    // 加上根节点的值
        return;
    }
    if (root->left) traversal(root->left, num * 10 + root->val);
    if (root->right) traversal(root->right, num * 10 + root->val);
}
int sumNumbers(TreeNode* root) {
    traversal(root, 0);
    return res;
}也可以这样写
int res = 0;
void dfs(TreeNode *root, int sum) {
    if (!root) return;
    sum = sum * 10 + root->val;
    if (!root->left && !root->right) {
        res += sum;
    }
    dfs(root->left, sum);
    dfs(root->right, sum);
    // sum /= 10;  不需要在去掉,因为是按值传递的
}
int sumNumbers(TreeNode* root) {
    dfs(root, 0);
    return res;
} 
                    