求葉子結(jié)點的個數(shù)代碼 二叉樹求葉子結(jié)點個數(shù)的算法(遞歸遍歷)?
二叉樹求葉子結(jié)點個數(shù)的算法(遞歸遍歷)?Int BTREE depth(BT->lchild){//find the depth of binary tree if(BT==null)//empt
二叉樹求葉子結(jié)點個數(shù)的算法(遞歸遍歷)?
Int BTREE depth(BT->lchild){//find the depth of binary tree if(BT==null)//empty tree returns 0return 0else{Int dep1=BTREE depth(BT->lchild)//遞歸調(diào)用逐層分析Int dep2=BTREE depth(BT->rchild)if(dep1>dep2)return dep2 1}}Int leave(bitnode*BT){//find二叉樹中的葉節(jié)點數(shù)if(BT==null)返回0else{if(BT->lchild==null)&這是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的練習(xí)。它使用遞歸形式。理解的時候需要考慮一下,但是函數(shù)相對簡單。
設(shè)計算法統(tǒng)計一棵二叉樹中所有葉子結(jié)點的數(shù)目及非葉子節(jié)點的數(shù)目?
這應(yīng)該是一個二叉樹遍歷問題。您可以選擇前序遍歷、中序遍歷和后序遍歷。當(dāng)一個節(jié)點沒有左節(jié)點和右節(jié)點時,意味著它是一個葉節(jié)點。當(dāng)節(jié)點有子節(jié)點時,它不是葉節(jié)點。至于輸出,可以先遍歷統(tǒng)計信息,然后分別輸出葉節(jié)點和非葉節(jié)點。也可以在遍歷時輸出節(jié)點并指示節(jié)點類型。
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計——統(tǒng)計二叉樹葉子結(jié)點的個數(shù),并輸出結(jié)果?
引用:
intnolefcount(node*t)/*查找二叉樹中的非葉節(jié)點數(shù)*/]{
if(!T)
return0/*空樹沒有葉子*/
elseif(!T->lchild&T->rchild)
return0/*葉節(jié)點*/
else
統(tǒng)計二叉樹中葉子結(jié)點的個數(shù)?
引用算法如下:計算當(dāng)前節(jié)點中的葉節(jié)點數(shù)二叉樹。由于葉節(jié)點是二叉樹中左、右子節(jié)點不存在的節(jié)點,可以在二叉樹遍歷過程中對這些特殊節(jié)點進(jìn)行計數(shù),完成葉節(jié)點數(shù)的統(tǒng)計。這個統(tǒng)計可以在任何遍歷模式下給出。下面的算法是用中間順序遍歷實現(xiàn)的:/****function:計算葉節(jié)點數(shù)input:二叉樹的根節(jié)點output:葉節(jié)點數(shù)**/intcountleaf(BiTree*P){staticintcount=0//注意這里如果是靜態(tài)變量,如果(P!=null){count=countleaf(P->lchild)如果((P->lchild==null)&(P->rchild==null))count=count 1count=countleaf(P->rchild)}return}
讓節(jié)點號為n(總是奇數(shù)),葉節(jié)點號為m,那么
m=(n1)/2
n=m*2-1