美文网首页
二叉树总结

二叉树总结

作者: MorganChang | 来源:发表于2018-12-20 09:48 被阅读0次

遍历(非递归)

  • 先序遍历算法

  1. 首先申请一个新的栈,记为stack;
  2. 然后将头结点head压入栈stack中;
  3. 每次从stack中弹出栈顶节点,记为cur,然后打印cur节点的值。如果cur右孩子不为空的话,将cur的右孩子压入stack中。最后如果cur的左孩子不为空的话,将cur的左孩子压入stack中。
  4. 不断重复步骤3,直到stack为空,全部过程结束。

  • 中序遍历算法

  1. 申请一个新的栈,记为stack,申请一个变量cur,初始时令cur等于头结点;
  2. 先把cur节点压入栈中,对以cur节点为头的整颗子树来说,依次把整颗树的左边界压入栈中,即不断令cur==cur.left,然后重复步骤2;
  3. 不断重复步骤2,直到发现cur为空,此时从stack中弹出一个节点,记为node。打印node的值,并让cur==node.right,然后继续重复步骤2;
  4. 当stack为空并且cur为空时,整个过程结束。

  • 后序遍历算法

方法一:使用两个栈实现

  1. 申请一个栈,记为s1,然后将头节点压入s1中;
  2. 从s1中弹出的节点记为cur,然后先把cur的左孩子压入s1中,然后把cur1的右孩子压入s1中;
  3. 在整个过程中,每一个从s1中弹出的节点都放进第二个栈s2中;
  4. 不断重复步骤2和步骤3,直到s1为空,过程停止。
  5. 从s2中依次弹出节点并打印,打印的顺序就是后续遍历的顺序了。

方法二:使用一个栈实现

  1. 申请一个栈,记为stack,将头节点压入stack,同时设置两个变量h和c。在整个流程中,h代表最近一次弹出并打印的节点,c代表当前stack的栈顶节点,初始时令h为头节点,c为NULL;
  2. 每次令c等于当前stack的栈顶节点,但是不从stack中弹出节点,此时分以下三种情况:
    (1)如果c的左孩子不为空,并且h不等于c的左孩子,也不等于c的右孩子,则把c的左孩子压入stack中;
    (2)如果情况1不成立,并且c的右孩子不为空,并且h不等于c的右孩子,则把c的右孩子压入stack中;
    (3)如果情况1和情况2都不成立,那么从stack中弹出c并打印,然后令h等于c。
  3. 一直重复步骤2,直到stack为空,过程停止。

相关文章

  • 二叉树知识(BST) 二叉查找树(Binary Search T

    二叉树基础知识总结 - CSDN博客 二叉树遍历分析 简单二叉树遍历,可分为:先序,中序,后序。 先序: 1.访问...

  • 算法-二叉树算法总结

    二叉树算法总结 1 二叉树的遍历 1.1 前序遍历 递归 迭代 1.2 中序遍历 递归 迭代 1.3 后序遍历 递...

  • Day48:是否为单值二叉树

    Day47: 作业题总结 Day47:求二叉树最小深度 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉...

  • 二叉树遍历

    总结一下二叉树的深度遍历(DFS)和广度遍历(BFS)首先, 创建二叉树的节点: 一、深度遍历 1.1 先序遍历(...

  • Leetcode.94.Binary Tree Inorder

    题目 给定一个二叉树, 非完全二叉树. 输出中根遍历. 思路 递归 总结 构造一个TreeNode比较复杂, 需要...

  • 数据结构——树

    有关树的算法题总结 实现二叉树的前序、中序、后序遍历(递归、非递归,mirros方法) 查找后继节点 二叉树的序列...

  • 一篇文章搞定面试中的二叉树题目(java实现)

    最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的。先上二叉树的数据结构: 二叉树的题目普遍可以...

  • 一篇文章搞定面试中的二叉树题目(java实现)

    最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的。 先上二叉树的数据结构: 二叉树的题目普遍可...

  • 二叉树常见面试题

    最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的。先上二叉树的数据结构: 二叉树的题目普遍可以...

  • Python实现二叉树常规面试题

    以前只是零散的学习了二叉树这种数据结构,下面总结下二叉树相关面试题的Python实现。后续会补充

网友评论

      本文标题:二叉树总结

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