斐波那契數(shù)列 如何寫算法求二叉樹中某個結(jié)點的深度(大概思路)?
如何寫算法求二叉樹中某個結(jié)點的深度(大概思路)?1,可以使用遞歸方法,2,先遍歷根,3,遞歸函數(shù),添加參數(shù),記錄當前根層。4查找節(jié)點對應的記錄值。5返回節(jié)點層號的偽碼://T node,l curre
如何寫算法求二叉樹中某個結(jié)點的深度(大概思路)?
1,可以使用遞歸方法,2,先遍歷根,3,遞歸函數(shù),添加參數(shù),記錄當前根層。4查找節(jié)點對應的記錄值。5返回節(jié)點層號的偽碼://T node,l current layer,value,node value//Return-1:未找到,0-n:對應層,int get odelayer(T*node,int value,int l){int i=-1 if(node){if(node->value==value)Return l if(i=get odelayer(node->left,value,l 1)!=-1)//檢查左子樹,如果找到,返回I/if(I=get odeLayer(node->right,value,l 1)!=-1)//檢查右子樹,return I}return I}
int height(BiTree T){if(T==null)return 0U=height(T->lchild)v=height(T->rchild)if(U>N)return(u1)//n should be vreturn(v1)}n in if should be v。其思想是一個節(jié)點的深度是其兩個子節(jié)點加1的最大值。在該算法中,u得到左子樹的深度,V得到右子樹的深度。那么這個節(jié)點的深度是u和V加1的最大值。要得到樹的深度,首先要得到樹中根節(jié)點的兩個子節(jié)點的深度,比較兩個子節(jié)點的深度,取最大值加1得到樹的深度。根節(jié)點的兩個子節(jié)點的深度是通過上述原理遞歸得到的。
關于求二叉樹深度的遞歸算法?
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)&這是學習數(shù)據(jù)結(jié)構(gòu)的練習。它使用遞歸形式。理解的時候需要考慮一下,但是函數(shù)相對簡單。