美文网首页
二叉树遍历算法非递归实现

二叉树遍历算法非递归实现

作者: 柴柴总 | 来源:发表于2020-04-03 08:08 被阅读0次

寒假的时候百度实习一面被问到了这个,没做出来,补习一下

利用栈结构

前序核心思想为:

  1. 每拿到一个 节点 就把它保存在 栈 中
  2. 继续对这个节点的 左子树 重复 过程1,直到左子树为 空
  3. 因为保存在 栈 中的节点都遍历了 左子树 但是没有遍历 右子树,所以对栈中节点 出栈 并对它的 右子树 重复 过程1,2
  4. 直到遍历完所有节点
    前序中序后序都通用的模板为(以前序遍历为例)
 def preorderTraversal(root: TreeNode): List[Int] = {
    // 用一个栈来保存中间结果
    val stack = new mutable.Stack[TreeNode]()
    val result = new mutable.ListBuffer[Int]()
    var temp = root
    while(temp != null || stack.nonEmpty) {
      if (temp != null) {
        // 每遇到一个节点,就把它加入结果集,并把该节点保存到中间结果中
        result.+=(temp.value)
        stack.push(temp)
        // 先遍历左子树,一直走到空
        temp = temp.left
      } else {
        // 左子树走到空,就从获取已经遍历过左子树的中间结果,将它出栈,并遍历它的右子树
        val node = stack.pop()
        temp = node.right
      }
    }
作者:18211010139
链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/solution/die-dai-jie-fa-shi-jian-fu-za-du-onkong-jian-fu-za/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

中序遍历在出栈时访问结点
后序遍历将插入结果列表尾部改为头部,先查看右节点再看左节点
参考资料
https://leetcode-cn.com/problems/binary-tree-postorder-traversal/solution/die-dai-jie-fa-shi-jian-fu-za-du-onkong-jian-fu-za/

相关文章

  • 二叉树的遍历实现递归与非递归

    本文实现了二叉树的深度遍历算法,分为递归与非递归 递归的实现非常简单,基本上没啥难度 非递归的实现需要根据遍历的顺...

  • 算法之二叉树

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

  • 二叉树的遍历 递归 非递归 Java

    二叉树的常用遍历算法实现 前序遍历 递归实现 非递归实现(1)这个是常规思路,先遍历到根节点,并打印、压栈,然后遍...

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

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

  • 二叉树遍历-JAVA实现

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

  • 总结

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

  • 面试题

    面试题 二叉树 非递归实现二叉树遍历 节点: 前序遍历 中序遍历 后序遍历 排序 快速排序 其他问题 算法题 给一...

  • 【数据结构】【C#】026-二叉树(BT):🌱遍历介绍

    一、递归遍历: 1、先序遍历:2、中序遍历:3、后续遍历:总结规律: 二、非递归遍历:利用栈来实现 非递归算法实现...

  • 二叉树,非递归法

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

  • 深入浅出二叉树遍历的非递归算法 2019-11-15(未经允许,

    1、二叉树遍历的递归算法 递归实现二叉树的遍历非常直观,回顾一下递归的代码: 前序遍历 中序遍历 后序遍历 他们的...

网友评论

      本文标题:二叉树遍历算法非递归实现

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