二叉树知识点、先序、中序、后序遍历(数据结构)

来源:互联网 发布:零售门店顾客数据分析 编辑:程序博客网 时间:2024/04/20 02:42

Reference:
1. 作者:小马
2. 作者:ggmghwp

一 、二叉树的概念

二叉树就是每个结点最多有两个子树的树形存储结构。
这里写图片描述

 1、满二叉树和完全二叉树上图就是典型的二叉树,其中左边的图还叫做满二叉树,右边是完全二叉树。然后我们可以得出结论,满二叉树一定是完全二叉树,但是反过来就不一定。满二叉树的定义是除了叶子结点,其它结点左右孩子都有,深度为k的满二叉树,结点数就是2的k次方减1。完全二叉树是每个结点都与深度为k的满二叉树中编号从1到n一一对应。2、树的深度树的最大层次就是深度,比如上图,深度是4。很容易得出,深度为k的树,拥有的最大结点数是2的k次方减1。3、树的孩子,兄弟,双亲上图中,B,C是A的孩子,B,C之间互为兄弟,A是B,C的双亲。

二、二叉树的先序、中序、后序遍历

1.前序遍历(DLR)

所谓前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。因此,前序遍历二叉树的过程是一个递归的过程。
下面是二叉树前序遍历的简单描述:
若二叉树为空,则结束返回。
否则:
(1)访问根结点;
(2)前序遍历左子树;
(3)前序遍历右子树。
在此特别要注意的是,在遍历左右子树时仍然采用前序遍历的法。如图所示:这里写图片描述
二叉树进行前序遍历,则遍历的结果为F,C,A,D,B,E,G,H,P(称为该二叉树的前序序列)。

2.中序遍历(LDR)
所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。因此,中序遍历二叉树的过程也是一个递归的过程。
下面是二叉树中序遍历的简单描述:
若二叉树为空,则结束返回。
否则:
(1)中序遍历左子树;
(2)访问根结点;
(3)中序遍历左子树。
在此也要特别注意的是,在遍历左右子树时仍然采用中序遍历的方法。如图所示:这里写图片描述
二叉树进行中序遍历,则遍历结果为A,C,B,D,F,E,H,G,P(称为该二叉树的中序序列)。

3.后序遍历(LRD)

所谓后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。因此,后序遍历二叉树的过程也是一个递归的过程。
下面是二叉树后序遍历的简单描述:
若二叉树为空,则结束返回。否则:
(1)后序遍历左子树;
(2)后序遍历右子树;
(3)访问根结点。
这里写图片描述
二叉树进行后序遍历,则遍历结果为A,B,D,C,H,P,G,E,F。

0 0
原创粉丝点击