計算二叉樹節(jié)點數(shù)算法 完全二叉樹的葉子節(jié)點數(shù)公式?
完全二叉樹的葉子節(jié)點數(shù)公式?讓節(jié)點數(shù)為n(總是奇數(shù)),葉節(jié)點數(shù)為m,然后m=(n1)/2n=m*2-1int BTREE depth(bitnode*BT){//如果(BT==null)找到二叉樹的深
完全二叉樹的葉子節(jié)點數(shù)公式?
讓節(jié)點數(shù)為n(總是奇數(shù)),葉節(jié)點數(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)時的練習(xí)。它使用遞歸形式。理解的時候需要考慮一下,但是功能會比較簡單。
二叉樹求葉子結(jié)點個數(shù)的算法(遞歸遍歷)?
引用:
intnolefcount(node*t)/*查找二叉樹中的非葉節(jié)點數(shù)*/]{
if(!T)
return0/*空樹沒有葉子*/
elseif(!T->lchild&T->rchild)
return0/*葉節(jié)點*/
else
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計——統(tǒng)計二叉樹葉子結(jié)點的個數(shù),并輸出結(jié)果?
一個完整的二叉樹有多個層。例如,如果一個三層完全二叉樹有7個節(jié)點,則節(jié)點總數(shù)為(2的3倍)減1;如果葉節(jié)點數(shù)為2(1的3倍),則為4。
如果是n級完全二叉樹,則節(jié)點總數(shù)為(2的n次方)減1;葉節(jié)點數(shù)為2(1的n次方);這將非常簡單。這次你明白了嗎?
一棵完全二叉樹共有個節(jié)點,該二叉樹有多少葉子節(jié)點?怎么算,謝謝?
二叉樹的葉節(jié)點數(shù)為N0,階數(shù)為2的節(jié)點數(shù)為N2,階數(shù)為1的節(jié)點數(shù)為N1
由于二叉樹中所有節(jié)點的階數(shù)等于或等于2,因此二叉樹中的節(jié)點總數(shù)為n=N0,N1,N2
讓我們看看二叉樹的分支數(shù)。除根節(jié)點外,所有其他節(jié)點都有一個分支。設(shè)B為分支總數(shù),n=b1][因為這些分支是由度為1或2的節(jié)點發(fā)出的,B=n1n2,n=n12*N2 1
通過綜合n=N0 N1 N2和n=n12*N2 1,我們可以得到N0=N2 1
完全二叉樹當(dāng)然是N0=N2 1的特殊二叉樹
完全二叉樹葉子節(jié)點的算法?
參考算法是如下:計算二叉樹中的葉節(jié)點數(shù)。由于葉節(jié)點是二叉樹中左、右子節(jié)點不存在的節(jié)點,可以在二叉樹遍歷過程中對這些特殊節(jié)點進行計數(shù),完成葉節(jié)點數(shù)的統(tǒng)計。這個統(tǒng)計可以在任何遍歷模式下給出。下面的算法是用中間順序遍歷實現(xiàn)的:/****function:計算葉節(jié)點數(shù)輸入:二叉樹的根節(jié)點輸出:葉節(jié)點數(shù)**/intcountleaf(BiTree*P){staticintcount=0//注意這里If(P!=null){count=countleaf(P->lchild)if((P->lchild==null)&(P->rchild==null))count=count 1count=countleaf(P->rchild)}return}