/**************************************************************************
*
* 129. [Sum Root to Leaf Numbers](https://leetcode.com/problems/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 :
* 4
* / \
* 9 0
* / \
* 5 1
* Input: root = [4,9,0,5,1]
* Output: 1026
* Explanation:
* The root-to-leaf path 4->9->5 represents the number 495.
* The root-to-leaf path 4->9->1 represents the number 491.
* The root-to-leaf path 4->0 represents the number 40.
* Therefore, sum = 495 + 491 + 40 = 1026.
**************************************************************************/
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
typedef struct TreeNode TreeNode;
static int dfs(TreeNode *root, int sum) {
if (NULL == root) return 0;
if (NULL == root->left && NULL == root->right)
return sum * 10 + root->val;
return dfs(root->left, sum * 10 + root->val) + dfs(root->right, sum * 10 + root->val);
}
int sumNumbers(TreeNode *root){
return dfs(root, 0);
}