这里采用的是先序遍历 ,代码:
class Solution {
public:
int sumNumbers(TreeNode* root) {
if(nullptr == root)
return 0;
int sum = 0;
stack<int> cur_val;
stack<TreeNode *> mystack;
cur_val.push(root->val);
mystack.push(root);
while(mystack.size()) {
TreeNode *node = mystack.top();
mystack.pop();
int tmp_val = cur_val.top();
cur_val.pop();
if(nullptr != node->right) {
mystack.push(node->right);
cur_val.push(tmp_val * 10 + node->right->val);
}
if(nullptr != node->left) {
mystack.push(node->left);
cur_val.push(tmp_val * 10 + node->left->val);
}
if(nullptr == node->left && nullptr == node->right){
sum += tmp_val;
}
}
return sum;
}
};