二叉树的遍历(先序,中序,后序,层序)

目录

  • 1.先序遍历
    • 1.代码实现
  • 2.中序遍历
    • 1.代码实现
  • 3.后序遍历
    • 1.代码实现
  • 4.遍历算法的应用
  • 5.层序遍历
    • 1.算法思想
    • 2.代码实现
  • 6.由遍历序列构造二叉树

1.先序遍历

根左右。

1.代码实现

若二叉树为空,则什么也不做;
若二叉树非空:
访问根结点;
②先序遍历左子树;
③先序遍历右子树。
空间复杂度:o(h)

二叉树的遍历(先序,中序,后序,层序)_第1张图片
二叉树的遍历(先序,中序,后序,层序)_第2张图片

2.中序遍历

左根右。

1.代码实现

若二叉树非空:
①先序遍历左子树;
访问根结点;
③先序遍历右子树。

二叉树的遍历(先序,中序,后序,层序)_第3张图片

3.后序遍历

左右根。

1.代码实现

若二叉树非空:
①先序遍历左子树;
②先序遍历右子树;
访问根结点

二叉树的遍历(先序,中序,后序,层序)_第4张图片

4.遍历算法的应用

①求树的深度
二叉树的遍历(先序,中序,后序,层序)_第5张图片

5.层序遍历

依次从左到右,从上到下遍历。

1.算法思想

①初始化一个辅助队列
②根结点入队
③若队列非空,则队头结点出队,访问该结点,并将其左、右孩子插入队尾(如果有的话)
④重复③直至队列为空

2.代码实现

二叉树的遍历(先序,中序,后序,层序)_第6张图片

6.由遍历序列构造二叉树

结论:若只给出一棵二叉树的前/中/后/层序遍历序列中的一种,不能唯一确定一棵二叉树。
可根据两种遍历确定二叉树:
前序+中序
后序+中序
层序+中序

Key:找到树的根节点,并根据中序序列划分左右子树,再找到左右子树根节点。
结论:前序、后序、层序序列的两两组合无法唯一确定一棵二叉树,必须加入中序

你可能感兴趣的:(数据结构与算法,数据结构,算法)