满二叉树各种节点数目的计算
1. 二叉樹(shù)的基本性質(zhì)
- 二叉樹(shù)的第i層至多有2i-1個(gè)結(jié)點(diǎn)(i>=1)
證明:(歸納法)
歸納基:i=1時(shí),只有一個(gè)結(jié)點(diǎn),2i-1=20=1;
歸納假設(shè):假設(shè)對(duì)所有的i命題成立;
歸納證明:二叉樹(shù)中每個(gè)結(jié)點(diǎn)最多有兩個(gè)子樹(shù),則第i+1層的結(jié)點(diǎn)數(shù)為2*2i-2=2i-1.
- 深度為h的二叉樹(shù)至多有2h-1個(gè)結(jié)點(diǎn)(h>=1)
證明:n=20+21+...+2h-1=2h-1.(等比數(shù)列)
- 對(duì)于一棵二叉樹(shù),若含有n0個(gè)葉子結(jié)點(diǎn),n2個(gè)度為2的結(jié)點(diǎn),則必存在關(guān)系式:n2=n0-1
證明:設(shè)二叉樹(shù)的結(jié)點(diǎn)總數(shù)為n=n0+n1+n2;
二叉樹(shù)上的分支總數(shù)為b=n1+2n2;
? ? ? ?又b=n-1;
? ? ? ?故:n2=n0-1.
- 具有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)的深度為[log2n]+1.[]表示取整
證明:設(shè)完全二叉樹(shù)的深度為k,則:2k-1<=n<2k
即k-1<=log2n<k
因?yàn)閗只能取整數(shù),所以k=[log2n]+1.
- 若對(duì)含n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)從上到下且從左至右進(jìn)行1至n的編號(hào),則對(duì)完全二叉樹(shù)中任意一個(gè)編號(hào)為i的結(jié)點(diǎn):
若i=1,則該結(jié)點(diǎn)是二叉樹(shù)的根,無(wú)雙親,否則,編號(hào)為[i/2]的結(jié)點(diǎn)為其雙親結(jié)點(diǎn);
若2i>n,則該結(jié)點(diǎn)無(wú)左孩子結(jié)點(diǎn),否則,編號(hào)為2i的結(jié)點(diǎn)為其左孩子結(jié)點(diǎn);
若2i+1>n,則該結(jié)點(diǎn)無(wú)右孩子結(jié)點(diǎn),否則,編號(hào)為2i+1的結(jié)點(diǎn)為其右孩子結(jié)點(diǎn)。
證明:設(shè)完全二叉樹(shù)中第i個(gè)結(jié)點(diǎn)的位置為第k層第j個(gè)結(jié)點(diǎn),即i=2k-1-1+j;
則左孩子結(jié)點(diǎn)的索引為:l=2k-1+2(j-1)+1=2*(2k-1-1+j)=2*i;
左孩子結(jié)點(diǎn)的索引為:r=2k-1+2(j-1)+2=2*(2k-1-1+j)+1=2*i+1;
?2. 二叉樹(shù)中各種結(jié)點(diǎn)數(shù)目的計(jì)算
若一個(gè)完全二叉樹(shù)的結(jié)點(diǎn)數(shù)目為n,求n0,n1,n2,數(shù)的高度h,左孩子結(jié)點(diǎn)數(shù)目nl和右孩子結(jié)點(diǎn)數(shù)目nr?
(n0為度為0的結(jié)點(diǎn),n1為度為1的結(jié)點(diǎn),n2為度為2的結(jié)點(diǎn))
求解思路:
樹(shù)的高度h=[log2n]+1;
因?yàn)槭峭耆鏄?shù),所以1~h-1層全滿;
前h-1層的結(jié)點(diǎn)數(shù)目為nh-1=2h-1-1;
第h層的葉子結(jié)點(diǎn)數(shù)目為nc1=n-nh-1;
第h-1層的葉子結(jié)點(diǎn)數(shù)目為nc2=2h-2-ceil(nc1/2);(ceil為向上取整)
所以n0=nc1+nc2;
n2=n0-1;
n1=n-n0-n2;
左孩子結(jié)點(diǎn)數(shù)目nl=n2+n1;
右孩子結(jié)點(diǎn)數(shù)目nr=n2;
轉(zhuǎn)載于:https://www.cnblogs.com/jmliao/p/6706333.html
總結(jié)
以上是生活随笔為你收集整理的满二叉树各种节点数目的计算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qtopia-2.2.0 的配置和交叉编
- 下一篇: Trie树统计单词前缀