二叉树的特性
Posted wawees
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的特性相关的知识,希望对你有一定的参考价值。
?
二叉树是啥?
二叉树的定义如下:
二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。
其实我也挺迷糊的。因为之前查过挺多资料的,在书中分别看到了以下两种观点:
二叉树是一种遵循以下规则的树:
每个结点的子结点数量可以为0,1,2
如果有两个子结点,则其中一个子结点的值必须小于父结点,另一个子结点的值必须大于父结点
二叉树的特点:
每个结点最多有两颗子树
左子树和右子树是由顺序的,次序不能任意颠倒
即使树中某个结点只有一棵子树,也要区分它是左子树还是右子树
标出的部分可以看出矛盾点在于,到底需不需要一个结点大于父结点,一个结点小于父结点???可以肯定的是,它一定是有序的。
另外,二叉树具有五种形态:
空二叉树
只有一个根结点
根结点只有左子树
根结点只有右子树
根结点既有左子树又有右子树
特殊的二叉树形态
斜树:所有的结点都只有左子树,称为左斜树。所有的结点都只有右子树,称为右斜树。
满二叉树:如果所有分支结点都存在左子树和右子树,且所有叶子都是同一层上。
完全二叉树:具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号i的结点在二叉树中的位置完全相同,则为完全二叉树。
由上面的解释可以得到,满二叉树一定是完全二叉树,反之亦然。
满二叉树每个结点下挂两个子结点,且最后一层必须是叶子都长齐了的。
完全二叉树等于在满二叉树上面进行剪枝,叶子只能出现在最下两层上。最后一层上有叶子,那么一定是聚集在左边连续位置上的。如果倒数第二层上有叶子,一定在聚集在右边连续的位置上(类似下面的完全二叉树,如果把e结点剔除,就可以很明显的看到b结点是在倒数第二层上面的叶子)。如果一个结点的度为1,则这个结点肯定只有左边的子结点,没有右边的子结点(由于二叉树的定义中,左右结点的顺序是有序的,如果这里少了左结点,而存在右结点的话,等于需要跳跃了一个,不是连续的了)。
如果大家都有5个结点,斜树的深度为5层。完全二叉树的深度为3层。由于只有5个结点,它不是满二叉树。得到完全二叉树的深度最小。但是如果有7个结点呢,斜树的深度为7层。完全二叉树的深度为3层。由于只有7个结点,它又是满二叉树,也是7层。得到完全二叉树的深度等于满二叉树的深度,依旧是最小。(画错了,斜树中的c结点,应该为b结点)
二叉树的特性
在二叉树的第i层上至多有 个结点( )
第i=1层, ,只有一个Root结点
第i=2层, ,最多2个结点
第i=3层, ,最多4个结点
…依次类推
深度为k的二叉树至多有 个结点( )
同样用数学归纳法可以验证
对任意一个二叉树T,如果其终点结点为 ,度为2的结点数为 ,则
具有n个结点的完全二叉树的深度为
由于完全二叉树的结点数小于或者等于同样深度的满二叉树( ),但一定大于 个,且由于结点数肯定是整数的,所以可以得到 ,通过对数运算得到 ,从而得到
如果对一棵有n个结点的完全二叉树(其深度为 )的结点按层序编码(从第一层到第 层,每层从左到右),对任一结点i( )有:
如果 ,则结点i是二叉树的根,无双亲;如果 ,则双亲是结点
如果 ,则结点i无左孩子;否则其左孩子是结点2i
如果 ,则结点i无右孩子;否则其右孩子是结点2i+1
以上是关于二叉树的特性的主要内容,如果未能解决你的问题,请参考以下文章