题解 | #二叉树的后序遍历#

二叉树的后序遍历

https://www.nowcoder.com/practice/1291064f4d5d4bdeaefbf0dd47d78541

class Solution {
  public:
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> ans, reverse;
        if(root == NULL){
            return ans;
        }
        vector<TreeNode*> helpans;
        TreeNode* temp = NULL;
        helpans.push_back(root);
        while (!helpans.empty()) {
            temp = helpans.back();
            reverse.push_back(temp->val);
            helpans.pop_back();
            if (temp->left != NULL)
                helpans.push_back(temp->left);
            if (temp->right != NULL)
                helpans.push_back(temp->right);
        }
        while (!reverse.empty()) {
            ans.push_back(reverse.back());
            reverse.pop_back();
        }
        return ans;
    }
};

讲一下算法流程

预处理:头节点入栈

----------------------------------------------------------------------------------------------------------

1) cur节点入逆序栈

2) 弹出cur节点

3) cur左节点入栈,cur右节点入栈

----------------------------------------------------------------------------------------------------------

栈空时跳出

逆序栈依次压入ans中

#23届找工作求助阵地##我的实习求职记录#
全部评论

相关推荐

10-22 19:44
门头沟学院 Java
面了100年面试不知...:那我得去剪个头
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务