1 /**
2 * Definition for binary tree
3 * struct TreeNode {
4 * int val;
5 * TreeNode *left;
6 * TreeNode *right;
7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8 * };
9 */
10 class Solution {
11 public:
12 void sumNumbers(TreeNode *node, int &totalSum, int curSum){
13 curSum = curSum *10 + node->val;
14 if (node->left==NULL && node->right==NULL){
15 totalSum += curSum;
16 return;
17 }
18 if (node->left != NULL)
19 sumNumbers(node->left, totalSum, curSum);
20 if (node->right != NULL)
21 sumNumbers(node->right, totalSum, curSum);
22 }
23 int sumNumbers(TreeNode *root) {
24 // IMPORTANT: Please reset any member data you declared, as
25 // the same Solution instance will be reused for each test case.
26 if (root==NULL)
27 return 0;
28 int sum = 0;
29 sumNumbers(root, sum, 0);
30 return sum;
31 }
32 };