求葉子結(jié)點(diǎn)的個(gè)數(shù)代碼 完全二叉樹的葉子節(jié)點(diǎn)數(shù)公式?
完全二叉樹的葉子節(jié)點(diǎn)數(shù)公式?讓節(jié)點(diǎn)數(shù)為n(總是奇數(shù)),葉節(jié)點(diǎn)數(shù)為m,然后m=(n1)/2n=m*2-1int BTREE depth(bitnode*BT){//如果(BT==null)找到二叉樹的深
完全二叉樹的葉子節(jié)點(diǎn)數(shù)公式?
讓節(jié)點(diǎn)數(shù)為n(總是奇數(shù)),葉節(jié)點(diǎn)數(shù)為m,然后
m=(n1)/2
n=m*2-1
int BTREE depth(bitnode*BT){//如果(BT==null)找到二叉樹的深度//空樹返回0否則{int dep1=BTREE depth(BT->lchild)//遞歸調(diào)用逐層分析int dep2=BTREE depth(BT->rchild)如果(dep1>dep2)返回dep1return dep2 1}int Leave(bitnode*BT){//如果(BT==null)return 0else{if(BT->lchild==null&BT->rchild==null)return 1elsereturn(Leave(BT->lchild)Leave(BT->rchild))}這是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí)的練習(xí)。它使用遞歸形式。理解的時(shí)候需要考慮一下,但是功能會(huì)比較簡(jiǎn)單。
二叉樹求葉子結(jié)點(diǎn)個(gè)數(shù)的算法(遞歸遍歷)?
二叉樹的葉節(jié)點(diǎn)數(shù)為N0,階數(shù)為2的節(jié)點(diǎn)數(shù)為N2,階數(shù)為1的節(jié)點(diǎn)數(shù)為N1
由于二叉樹中所有節(jié)點(diǎn)的階數(shù)等于或等于2,因此二叉樹中的節(jié)點(diǎn)總數(shù)為n=N0,N1,N2
讓我們看看二叉樹的分支數(shù)。除根節(jié)點(diǎn)外,所有其他節(jié)點(diǎn)都有一個(gè)分支。設(shè)B為分支總數(shù),n=b1][因?yàn)檫@些分支是由階數(shù)為1或2的節(jié)點(diǎn)發(fā)出的,B=N1 N2,n=N1 2*N2 1
通過綜合n=N0 N1 N2和n=N1 2*N2 1,我們可以得到N0=N2 1
完全二叉樹是N0=N2[1]的特殊二叉樹
完全二叉樹葉子節(jié)點(diǎn)的算法?
參考:
intnolefcount(node*t)/*求二叉樹中非葉節(jié)點(diǎn)的個(gè)數(shù)*/]{
if(!T)
return0/*空樹沒有葉子*/
else if(!孩子們!T->rchild)
return0/*葉節(jié)點(diǎn)*/
else
return(1 nolefcount(T->lchild)nolefcount(T->rchild))/*當(dāng)前節(jié)點(diǎn)左子樹中的非葉數(shù)*/]