Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path1->2->3which represents the number123.
Find the total sum of all root-to-leaf numbers.
For example,
1/ 2 3
The root-to-leaf path1->2represents the number12. The root-to-leaf path1->3represents the number13.
Return the sum = 12 + 13 =25.
C++
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int sumNumbers(TreeNode *root){ if(NULL == root) return 0; int sum = 0; sum = getSum(root,0); //getSum2(root,0,sum); return sum; } void getSum2(TreeNode *root, int num, int &sum){ num = num * 10 + root->val; if(NULL == root->left && NULL == root->right){ sum += num; return; } if(root->left) getSum2(root->left, num, sum); if(root->right) getSum2(root->right, num, sum); } int getSum(TreeNode* root, int num){ num = num * 10 + root->val; if(NULL == root->left && NULL == root->right) return num; int sum = 0; if (NULL != root->left) sum += getSum(root->left,num); if (NULL != root->right) sum += getSum(root->right,num); return sum; } };
转载于:https://www.cnblogs.com/vercont/p/10210248.html