Sszl

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

树与二叉树(一)二叉树的主要性质

1. 非空二叉树上叶子节点数等于双分支节点加1.

证明

第一步:设二叉树上叶子节点数为n0,单分支节点数为n1,双分支节点数为n2,则总节点数N=n0+n1+n2

第二步:除根节点外,每个节点都有双亲,也就是说每个节点都是其他某个节点的子结点。由此,总节点数=子节点总数+1(根节点),即N=1*n1+2*n2+1;

综上,可得n0+n1+n2=n1+2n2+1;解得n0=n2+1

证毕。

 

2.二叉树的第i层最多有2i-1(i>=1)个节点.

证明:(数学归纳法)

第一步:已知,二叉树第一层只有一个根节点(root),第一层节点数为2,即20

第二步:设第i-1层(i>1)有2i-2个结点,要使第i层结点数最多,就要让第i-1层的每个结点都有两个子结点,也就是说第i层的结点最多为第i层的两倍,即2i-1

证毕。

 

3.高度(深度)为k的二叉树最多有2k-1个结点。

证明:

要使总结点最多,就要使每层结点最多,根据性质2可知,每层结点的最大值构成了一个首项为1,公比为2的等比数列,那么总节点数就是这个等比数列的和,为2k-1

证毕。

 

4.对于有n个结点的完全二叉树,按照从上到下、从左到右的顺序编码(根结点编码为1),则每个结点与其双亲结点(存在的情况下)和孩子结点(存在的情况下)之间都存在如下关系:

(注:完全二叉树是由满二叉树从右到左、从下到上依次删除结点所得。)

设a为结点A的编码。

2a<=n,则A的左孩子编码为2a;若2a+1<=n,则A的右孩子编码为2a+1.

a!=1,则A的双亲编码为[a/2](向下取整)

证明:

设A是第i行的第j个结点,则A是第2i-1-1+j个结点(前i-1行结点总数+同行且位于A之前的结点数+1),a=2i-1+j-1

如果2a<=n那么A存在左孩子,A的左孩子AL位于第i+1行,且与它同行且在它之前的结点数为2(j-1)个,那么它的编码aL =2i-1+2(j-1)+1=2i+2j-2=2a

同理可得A的右孩子结点编码为2a+1

比较左右孩子结点的编码和A的编码,利用数学归纳法即可得出双亲编码为[a/2](向下取整)

证毕。

5.n个结点能构成h(n)种二叉树,h(n)=Cn2n /n+1

 

6.具有n个结点的完全二叉树的高度h,  h=[log2n]+1(向下取整)=[log2(n+1)](向上取整)

证明:

据性质三:      2h-1-1<n<=2h-1,   取对数:h-1<log2(n+1)<=h       log2(n+1)向上取整可得,h=[log2(n+1)](向上取整)

                              2h-1<=n<2h,      取对数:h-1<=log2n<h              log2n      向下取整可得,h=[log2n]+1(向下取整)

证毕。

 

posted on 2018-09-07 16:02  Sszl  阅读(453)  评论(0)    收藏  举报