调试了很久,从最上层开始,每次增加10倍进入下一层,直到最后一层,把所有值一次加上,代码如下:
class Solution {
public:
int sum=0;
int sumNumbers(TreeNode *root) {
if(root==NULL) return 0;
calSum(root,0);
return sum;
}
void calSum(TreeNode *root,int num){
num = root->val+10*num;
if(root->left==NULL&&root->right==NULL){
sum += num;
return;
}
if(root->left!=NULL) calSum(root->left,num);
if(root->right!=NULL) calSum(root->right,num);
}
};