binary-tree-postorder-traversal

2019-05-02  本文已影响0人  DaiMorph
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;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读