1.二叉树:
本身是有序树;
树和二叉树的三个主要差别:
-
树的结点个数至少为1,而二叉树的结点个数可以为0;
-
树中结点的最大度数没有限制,而二叉树结点的最大度数为2;
-
树的结点无左、右之分,而二叉树的结点有左、右之分。
二叉树的第i层至多有2^(i-1)个结点;
深度为k的二叉树至多有2^k-1个结点;
(等比数列1+2+4+…+2^(k-1) = 2^k-1)。
2.满二叉树:
一棵深度为k,且有2^k-1个节点的树是满二叉树。
另一种定义:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
这两种定义是等价的。
从树的外形来看,满二叉树是严格三角形的,大家记住下面的图,它就是满二叉树的标准形态:
所有内部节点都有两个子节点,最底一层是叶子节点。
性质:
-
如果一颗树深度为h,最大层数为k,且深度与最大层数相同,即k=h;
-
它的叶子数是: 2^(h-1)
-
第k层的结点数是: 2^(k-1)
-
总结点数是: 2^k-1 (2的k次方减一)
-
总节点数一定是奇数。
-
树高:h=log2(n+1)。
3.完全二叉树
如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。
定义:完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树
性质:
-
深度为k的完全二叉树,至少有2^(k-1)个节点,至多有2^k-1个节点。
-
树高h=log2n + 1。
有以下几个结论成立:
1>当 i>1 时,父亲结点为结点 [i/2] 。(i=1 时,表示的是根结点,无父亲结点)
2>如果 2i>n(总结点的个数) ,则结点 i 肯定没有左孩子(为叶子结点);否则其左孩子是结点 2i 。
3>如果 2i+1>n ,则结点 i 肯定没有右孩子;否则右孩子是结点 2i+1