1. 二叉樹的基本性質
- 二叉樹的第i層至多有2i-1個結點(i>=1)
證明:(歸納法)
歸納基:i=1時,只有一個結點,2i-1=20=1;
歸納假設:假設對所有的i命題成立;
歸納證明:二叉樹中每個結點最多有兩個子樹,則第i+1層的結點數為2*2i-2=2i-1.
- 深度為h的二叉樹至多有2h-1個結點(h>=1)
證明:n=20+21+...+2h-1=2h-1.(等比數列)
- 對於一棵二叉樹,若含有n0個葉子結點,n2個度為2的結點,則必存在關系式:n2=n0-1
證明:設二叉樹的結點總數為n=n0+n1+n2;
二叉樹上的分支總數為b=n1+2n2;
又b=n-1;
故:n2=n0-1.
- 具有n個結點的完全二叉樹的深度為[log2n]+1.[]表示取整
證明:設完全二叉樹的深度為k,則:2k-1<=n<2k
即k-1<=log2n<k
因為k只能取整數,所以k=[log2n]+1.
- 若對含n個結點的完全二叉樹從上到下且從左至右進行1至n的編號,則對完全二叉樹中任意一個編號為i的結點:
若i=1,則該結點是二叉樹的根,無雙親,否則,編號為[i/2]的結點為其雙親結點;
若2i>n,則該結點無左孩子結點,否則,編號為2i的結點為其左孩子結點;
若2i+1>n,則該結點無右孩子結點,否則,編號為2i+1的結點為其右孩子結點。
證明:設完全二叉樹中第i個結點的位置為第k層第j個結點,即i=2k-1-1+j;
則左孩子結點的索引為:l=2k-1+2(j-1)+1=2*(2k-1-1+j)=2*i;
左孩子結點的索引為:r=2k-1+2(j-1)+2=2*(2k-1-1+j)+1=2*i+1;
2. 二叉樹中各種結點數目的計算
若一個完全二叉樹的結點數目為n,求n0,n1,n2,數的高度h,左孩子結點數目nl和右孩子結點數目nr?
(n0為度為0的結點,n1為度為1的結點,n2為度為2的結點)
求解思路:
樹的高度h=[log2n]+1;
因為是完全二叉樹,所以1~h-1層全滿;
前h-1層的結點數目為nh-1=2h-1-1;
第h層的葉子結點數目為nc1=n-nh-1;
第h-1層的葉子結點數目為nc2=2h-2-ceil(nc1/2);(ceil為向上取整)
所以n0=nc1+nc2;
n2=n0-1;
n1=n-n0-n2;
左孩子結點數目nl=n2+n1;
右孩子結點數目nr=n2;