class Solution {
public:
int Sum=0;
int sumNumbers(TreeNode* root) {
search(root,0);
return Sum;
}
void search(TreeNode *root,int tempSum){
if(root==nullptr) return;
tempSum=tempSum*10+root->val;
if(root->left==nullptr && root->right==nullptr){
Sum+=tempSum;
return;
}
if(root->left!=nullptr){
search(root->left,tempSum);
}
if(root->right!=nullptr){
search(root->right,tempSum);
}
}
};
class Solution {
public:
int Sum=0;
int sumNumbers(TreeNode* root) {
if(root==nullptr) return 0;
queue<TreeNode*> Q;
queue<int> SumQ;
int x;
TreeNode *p;
Q.push(root);
SumQ.push(root->val);
while(!Q.empty()){
p=Q.front();
Q.pop();
x=SumQ.front();
SumQ.pop();
if(p->left==nullptr && p->right==nullptr){
Sum+=x;
}
if(p->left!=nullptr){
Q.push(p->left);
SumQ.push(x*10+p->left->val);
}
if(p->right!=nullptr){
Q.push(p->right);
SumQ.push(x*10+p->right->val);
}
}
return Sum;
}
};