class Solution {
public:
//遍历啊遍历
int sumNumbers(TreeNode *root) {
int sum=0;
if(!root) return 0;
//postorder traversal
vector<TreeNode *> v;
TreeNode *pNode=root;
TreeNode *pre=0;
while(!v.empty() || pNode)
{
if(pNode)
{
v.push_back(pNode);
pNode=pNode->left;
}
else
{
TreeNode *top=v[v.size()-1];
if(pre==top->right)
{
if(!top->left && !top->right)
{
sum=sum+getPath(v);
}
v.pop_back();
pre=top;
}
else
{
pNode=top->right;
pre=0;
}
}
}
return sum;
}
private:
int getPath(vector<TreeNode*> &v)
{
int ret=0;
for(size_t i=0;i!=v.size();i++)
{
ret=ret*10+v[i]->val;
}
return ret;
}
};