学科分类
目录
数据结构

二叉树的分类

根据二叉树中子结点的排布,可将二叉树分为非完全二叉树、完全二叉树和满二叉树。

非完全二叉树是普通的二叉树,如上一节中的图1就是一棵非完全二叉树。

完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。如图1所示。

图1 完全二叉树

图1中是一棵完全二叉树,最后一层的结点都优先填在左边。若结点L在结点F的右侧,则该树不是完全二叉树。

对于完全二叉树来说,它有以下特点:

● 叶子结点只能出现在最下两层;

● 最下层的叶子结点一定集中在左边连续位置;

● 如果结点的度为1,那么该结点只有左孩子,不存在只有右孩子的情况;

● 同样结点数的二叉树,完全二叉树的深度最小。

满二叉树:除叶子结点外,树中的每个结点都有两个孩子结点,每一层的结点数都达到最大。如图2即为一棵满二叉树。

图2 满二叉树

图2中的二叉树,每一层结点数都达到最大,没有出现“缺胳膊少腿”的现象,在同样深度的二叉树中,满二叉树的结点最多。如果一棵深度为k的二叉树有2k-1个结点,那么这就是一棵满二叉树。

满二叉树是完全二叉树的特殊情况,可以说满二叉树也是一棵完全二叉树,但不能说完全二叉树是满二叉树。

斜树:一棵只有左孩子或者只有右孩子的树叫作斜树。只有左孩子的二叉树称作左斜树,只有右孩子的二叉树叫作右斜树。如图3所示。

图3 斜树

斜树的每一层都只有一个结点,结点的个数与二叉树的深度相同。仔细观察发现,斜树与线性表结构是相同的,其实线性表可以看成是树的一种特殊形式。

点击此处
隐藏目录