树与二叉树(一)二叉树的主要性质
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(向下取整)
证毕。
浙公网安备 33010602011771号