&LeetCode145& 二叉樹的後序遍歷

題目

給定一個二叉樹,返回它的 後序 遍歷。

示例:
輸入: [1,null,2,3]
1

2
/
3
輸出: [3,2,1]

來源:力扣(LeetCode

思路

後序遍歷的順序是左-右-根;
首先,先將先序遍歷的根-左-右順序變爲根-右-左,再翻轉變爲後序遍歷的左-右-根,翻轉還是改變結果 res 的加入順序,然後把更新輔助結點p的左右順序換一下即可。

C++代碼

class Solution {
public:
    vector<int> postorderTraversal(TreeNode* root) 
    {
        vector<int> res;
        stack<TreeNode*> s;
        TreeNode *p = root;
        while (!s.empty() || p) 
        {
            if (p) 
            {
                s.push(p);
                res.insert(res.begin(), p->val);
                p = p->right;
            } 
            else 
            {
                TreeNode *t = s.top(); 
                s.pop();
                p = t->left;
            }
        }
        return res;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章