寫出求二叉樹(shù)深度的算法 如何寫算法求二叉樹(shù)中某個(gè)結(jié)點(diǎn)的深度(大概思路)?
如何寫算法求二叉樹(shù)中某個(gè)結(jié)點(diǎn)的深度(大概思路)?1,可以使用遞歸方法,2,先遍歷根,3,遞歸函數(shù),添加參數(shù),記錄當(dāng)前根層。4查找節(jié)點(diǎn)對(duì)應(yīng)的記錄值。5返回節(jié)點(diǎn)層號(hào)的偽碼://T node,l curre
如何寫算法求二叉樹(shù)中某個(gè)結(jié)點(diǎn)的深度(大概思路)?
1,可以使用遞歸方法,2,先遍歷根,3,遞歸函數(shù),添加參數(shù),記錄當(dāng)前根層。4查找節(jié)點(diǎn)對(duì)應(yīng)的記錄值。5返回節(jié)點(diǎn)層號(hào)的偽碼://T node,l current layer,value,node value//Return-1:未找到,0-n:對(duì)應(yīng)層,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)//檢查左子樹(shù),如果找到,返回I/if(I=get odeLayer(node->right,value,l 1)!=-1)//檢查右子樹(shù),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。其思想是一個(gè)節(jié)點(diǎn)的深度是其兩個(gè)子節(jié)點(diǎn)加1的最大值。在該算法中,u得到左子樹(shù)的深度,V得到右子樹(shù)的深度。那么這個(gè)節(jié)點(diǎn)的深度是u和V加1的最大值。要得到樹(shù)的深度,首先要得到樹(shù)中根節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)的深度,比較兩個(gè)子節(jié)點(diǎn)的深度,取最大值加1得到樹(shù)的深度。根節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)的深度是通過(guò)上述原理遞歸得到的。