/*从根节点到每个叶节点的数字由路径上的所有数字组成,可以采用深度搜索
的方法,遍历二叉树的所有路径,也就获得了所有数字。在遍历的同时,将他们累加
即可获得结果。*/
class Solution {
public:
int sumNumbers(TreeNode* root) {
int sums(0), num(0);
Numbers(root, sums, num);
return sums;
}
void Numbers(TreeNode *root, int &sums, int &num){
if(root == nullptr) return;
num = num * 10 + root->val;
if(root->left == nullptr && root->right == nullptr){//来到叶节点
sums += num;
}
Numbers(root->left, sums, num);
Numbers(root->right, sums, num);
num = (num - root->val) / 10;
}
};