美文网首页
用非递归的方式实现二叉树遍历

用非递归的方式实现二叉树遍历

作者: 鸭蛋蛋_8441 | 来源:发表于2019-06-01 06:52 被阅读0次

先序遍历

思路

遍历顺序为

1.如果根节点非空,将根节点加入到栈中。

2.如果栈不空,弹出出栈顶节点,将其值加加入到数组中。

   如果该节点的右子树不为空,将右子节点加入栈中。

   如果左子节点不为空,将左子节点加入栈中。

3. 重复第二步,直到栈空。

代码实现


中序遍历

思路

遍历顺序为

1.如果根节点非空,将根节点加入到栈中。

2.如果栈不空,取栈顶元素(暂时不弹出),

  如果左子树已访问过,或者左子树为空,则弹出栈顶节点,将其值加入数组,如有右子树,将右子节点加入栈中。

  如果左子树不为空,则将左子节点加入栈中。

3.重复第二步,直到栈空。

代码实现


后序遍历

思路

遍历顺序为

1.如果根节点非空,将根节点加入到栈中。

2.如果栈不空,取栈顶元素(暂时不弹出),

   如果(左子树已访问过或者左子树为空),且(右子树已访问过或右子树为空),则弹出栈顶节点,将其值加入数组,

   如果左子树不为空,切未访问过,则将左子节点加入栈中,并标左子树已访问过。

   如果右子树不为空,切未访问过,则将右子节点加入栈中,并标右子树已访问过。

3.重复第二步,直到栈空。

代码实现

相关文章

  • 二叉树三种遍历的递归和非递归实现&层次遍历实现(C++)

    对于二叉树的三种遍历方式(先序、中序、后序),用递归和非递归(栈)的方式实现,对于后序遍历用队列实现。 四种遍历方...

  • 算法之二叉树

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

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

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

  • 二叉树的各类遍历方法

    二叉树的遍历主要有四种:前序、中序、后序、层序。 遍历的实现方式主要是:递归和非递归。递归遍历的实现非常容易,非递...

  • 二叉树的操作

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

  • 总结

    1、二叉树广度遍历(非递归) 广度遍历非递归实现需要依靠一个队列。 2、二叉树深度遍历(递归与非递归,前序,中序和...

  • 二叉树的三种深度优先遍历算法与思路

    看了一些关于二叉树遍历算法的文章,例如:二叉树三种遍历方式的递归和循环实现二叉树的递归与非递归遍历(前序、中序、后...

  • 二叉树遍历

    请递归,非递归方式分别前序遍历,中序遍历,后续遍历二叉树

  • 二叉树,非递归法

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

  • 二叉树的非递归遍历通用方法

    在二叉树的非递归遍历上有很多种方法,但如果想要统一用一种通用方式来实现三者的非递归遍历还是很酷的. 树的结构 递归...

网友评论

      本文标题:用非递归的方式实现二叉树遍历

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