求二叉樹高度的c語言函數 求二叉樹高度的c語言函數

C語言二叉樹求高度問題

deep=leftdeep=rightdeep?leftdeep+1:rightdeep+1;?

成都創(chuàng)新互聯主要從事網站設計、網站制作、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務柳林,十年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

放在

leftdeep=TreeDeep(T-lchild);?

rightdeep=TreeDeep(T-rchild);

后面

就是一直訪問左孩子到樹的底部后再一層層返回去,返回一層深度加一,一旦遇到右孩子不為空時,再訪問右孩子的左孩子到樹的底部后再一層層返回去,返回一層深度加一,每一個結點都進行右孩子與左孩子深度的比較,取大返回

求二叉樹高度的原理、算法是什么,越詳細越好,C語言,謝謝

首先分析二叉樹的深度(高度)和它的左、右子樹深度之間的關系。從二叉樹深度的定義可知,二叉樹的深度應為其左、右子樹深度的最大值加1。由此,需先分別求得左、右子樹的深度,算法中“訪問結點”的操作為:求得左、右子樹深度的最大值,然后加 1 。

int Depth (BiTree T ){ // 返回二叉樹的深度

if ( !T ) depthval = 0;

else {

depthLeft = Depth( T-lchild );

depthRight= Depth( T-rchild );

depthval = 1 + (depthLeft depthRight ?

depthLeft : depthRight);

}

return depthval;

}

求二叉樹高度非遞歸算法(C語言)

int BiTreeDepthHierarchy(BiThrTree T) //非遞歸類層次遍歷求二叉樹深度

{

int depth=0,hp,tp,lc; //hp為已訪問的結點數,tp歷史入隊的結點總數,lc為每層最后一個結點標記

LinkQueue Q;

BiThrNode *p;

if(T)

{

p=T;

hp=0;tp=1;lc=1;

InitQueue(Q);

EnQueue(Q,p);

while(!QueueEmpty(Q))

{

DeQueue(Q,p);

hp++; //hp為已訪問的結點數

if(p-lchild)

{

EnQueue(Q,p-lchild);

tp++; //tp記錄歷史入隊的結點總數

}

if(p-rchild)

{

EnQueue(Q,p-rchild);

tp++;

}

if(hp==lc) //當hp=lc時,表明本層結點均已訪問完

{

depth++;

lc=tp; //lc=tp,更新下層的末結點標記

}

}

}

return depth;

}

用C語言寫一個計算二叉樹的高度

思想:對非空二叉樹,其深度等于左子樹的最大深度加1。

Int Depth(BinTree *T)

{

int dep1,dep2;

if(T==Null) return(0);

else

{

dep1=Depth(T-lchild);

dep2=Depth(T-rchild);

if(dep1dep2) return(dep1+1);

else return(dep2+1);

}

請用C語言編寫一個函數,實現求二叉樹高度的算法,并給出結點結構

typedef int Status;

typedef char TElemType;

typedef struct BiTNode{

TElemType data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

int GetDepth(BiTree T){

if(!T) return 0;

else{

int depthLeft = GetDepth( T-lchild );

int depthRight= GetDepth( T-rchild );

return (depthLeftdepthRight?depthLeft:depthRight)+1;

}

}

分享題目:求二叉樹高度的c語言函數 求二叉樹高度的c語言函數
路徑分享:http://muchs.cn/article44/hgieee.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站制作營銷型網站建設、網站設計用戶體驗、微信公眾號、定制開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站托管運營