class Solution {
public:
vector<int> postorderTraversal(TreeNode *root) {
vector<int>result;
stack<TreeNode*>st;
TreeNode*p=root,*q=NULL;
do{
while(p)st.push(p),p=p->left;
q=NULL;
while(!st.empty())
{
p=st.top();
st.pop();
if(p->right==q)//右子树为空或者已经访问
{
result.push_back(p->val);
q=p;
}
else//根节点p不能访问,因此在此入栈,处理p->right
{
st.push(p);
p=p->right;
break;
}
}
}while(!st.empty());
return result;
}
};
网友评论