uacs2024

导航

leetcode145-二叉树的后序遍历 ps:后序遍历的迭代法感觉远远比前序中序的迭代法要难

145. 二叉树的后序遍历

class Solution {
public:
    vector<int> res;
    void Tracking(TreeNode* root)
    {
        if(root==nullptr) return;
        Tracking(root->left);
        Tracking(root->right);
        res.push_back(root->val);
    }
    vector<int> postorderTraversal(TreeNode* root) {
        Tracking(root);
        return res;
    }
};

递归法没什么好说的,有手就行。难就难在迭代法,想了很久。

这是别人的代码。

class Solution {
public:
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> result;
        if(root==NULL) return result;
        stack<TreeNode*> S;
        S.push(root);
        while(!S.empty())
        {
            TreeNode *p=S.top();
            S.pop();
            if(p!=NULL)
            {
                S.push(p);
                S.push(NULL);
                if(p->right) S.push(p->right);
                if(p->left) S.push(p->left);
            }
            else
            {
                p=S.top();
                S.pop();
                result.push_back(p->val);
            }
        }
        return result;
    }
};

 

posted on 2022-10-28 19:42  ᶜʸᵃⁿ  阅读(12)  评论(0编辑  收藏  举报