数据结构之二叉树遍历

允我心安 提交于 2020-02-07 15:50:32

一、树的遍历操作

     树的遍历:从根节点出发,按照某种次序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。

     遍历的实质为将树结构(非线性结构)转换为线性结构。

     树通常有前序(根)遍历、后序(根)遍历和层序(次)遍历三种方式。

    前序遍历:

    树的前序遍历操作定义为:                                                        图1

 

           若树为空,则空操作返回;

           否则                                

          (1)访问根结点;

       (2)按照从左到右的顺序前序遍历根结点的每一棵子树          

             图中树的前序遍历序列为:A B D E H I F C G

 

树的后序遍历操作定义为:

       若树为空,则空操作返回;

       否则

       ⑴ 按照从左到右的顺序后序遍历根结点的每一棵子树;

       ⑵ 访问根结点。

       图中树的后序遍历序列: D H I E F B G C A

 

树的层序遍历操作定义为:

       从树的第一层(即根结点)开始,自上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。

       图中树的层序遍历序列: A B C D E F G H I

 

二、二叉树的遍历操作

前序(根)遍历:

若二叉树为空,则空操作返回;

否则:

①访问根结点;

②前序遍历根结点的左子树;

③前序遍历根结点的右子树。

图中二叉树的前序遍历序列:A B D G C E F

 

中序(根)遍历:

若二叉树为空,则空操作返回;

否则:

①中序遍历根结点的左子树;

②访问根结点;

③中序遍历根结点的右子树。

图中二叉树的中序遍历序列:D G B A E C F

 

后序(根)遍历:

若二叉树为空,则空操作返回;

否则:

①后序遍历根结点的左子树;

②后序遍历根结点的右子树;

③访问根结点。

图中二叉树的后序遍历序列:G D B E F C A

 

层序遍历:

二叉树的层次遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。

图中二叉树的层序遍历序列:A B C D E F G

 

三、方法

已知一棵二叉树的前序序列和中序序列,构造该二叉树的过程如下:

1. 根据前序序列的第一个元素建立根结点;

2. 在中序序列中找到该元素,确定根结点的左右子树的中序序列;

3. 在前序序列中确定左右子树的前序序列;

4. 由左子树的前序序列和中序序列建立左子树;

5. 由右子树的前序序列和中序序列建立右子树。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!