美文网首页
二叉树后序遍历非递归

二叉树后序遍历非递归

作者: 方逸飞 | 来源:发表于2015-01-02 22:01 被阅读85次

这是LeetCode上的题,解答也是官配,只是复习数据结构的时候想想自己有不少东西都没有整理过,过后想找也不方便。本来这种情况下,最好的方法是开一个博客,但是看到简书的界面比较好看,就先放到这里。等统计力学2考完了之后自己搭一个博客系统,语法高亮什么的也搞起来,到时候再开个帖子。

BTW, 这是第一次用Markdown写东西,很多东西还真是不习惯,另外发现简书对于代码块的支持好像还是有点问题的,两个`之间插入不了大段代码,还是得用空四格的方法,而且也没有语法高亮。

#include <iostream>
#include <stack>
using namespace std;

class Solution {
public:
    vector<int> postorderTraversal(TreeNode *root) {
        TreeNode *mark = NULL;
        stack<TreeNode *> S;
        vector<int> result;
        do {
            while(root) {
                S.push(root);
                root = root->left;
            }
            mark = NULL;
            while(!S.empty()) {
                root = S.top();
                S.pop();
                /* 右儿子不存在或已经被访问过 */
                if(root->right == mark) {
                    result.push_back(root->val);
                    mark = root;//后序遍历时,当节点的右儿子存在时,其前驱为右儿子
                } else {
                    S.push(root);
                    root = root->right;
                    break;
                }
            }
        } while(!S.empty());
        return result;
    }
};

相关文章

  • goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序

    goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序遍历 层序遍历) 前序遍历 中序遍历 后序遍历 代...

  • 二叉树遍历-JAVA实现

    基础二叉树 二叉树遍历分为前序、中序、后序递归和非递归遍历、还有层序遍历。 前序递归遍历算法:访问根结点-->递归...

  • 二叉树,非递归法

    递归法 二叉树的递归,有前序遍历、中序遍历、后序遍历,一般采用递归法,比较简单 非递归法 二叉树非递归法,采用栈来实现

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • LeetCode 二叉树的后序遍历

    给定一个二叉树,返回它的 后序 遍历。 非递归(迭代): 后序遍历递归定义:先左子树,后右子树,再根节点。 后序遍...

  • 左神算法笔记——Morris遍历

    基本问题——实现二叉树的前序、中序、后序遍历 (递归、非递归,mirros方法) 递归 递归方式下的前中后遍历 非...

  • 二叉树遍历

    先序遍历——[递归、非递归] 中序遍历——[递归、非递归] 后序遍历——[递归、非递归] 层次遍历——[递归、非递归]

  • 二叉树的遍历

    非递归前序遍历 非递归中序遍历 非递归后序遍历 层序遍历

  • 各种二叉树遍历

    C++实现,二叉树的递归、非递归版本的前序、中序、后序遍历。

  • 二叉树的操作

    /*主要内容:1、实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式*/ 实现二叉树的先序、中序、后序遍历...

网友评论

      本文标题:二叉树后序遍历非递归

      本文链接:https://www.haomeiwen.com/subject/rtbztttx.html