二叉樹遞歸算法理解 設(shè)計計算二叉樹中所有節(jié)點值之和的算法?
設(shè)計計算二叉樹中所有節(jié)點值之和的算法?遞歸方法樹中節(jié)點數(shù)=左子節(jié)點數(shù),右子節(jié)點數(shù)1樹為空:節(jié)點數(shù)為0inttreenodes(bitreet){intnum1,num2if(t==null)//樹為空
設(shè)計計算二叉樹中所有節(jié)點值之和的算法?
遞歸方法
樹中節(jié)點數(shù)=左子節(jié)點數(shù),右子節(jié)點數(shù)1
樹為空:節(jié)點數(shù)為0
inttreenodes(bitreet)
{
intnum1,num2
if(t==null)//樹為空
return(0)
num1=treenodes(t->lchild)
num2=treenodes(t->rchild)
return(num2 num1 1)//左、右子節(jié)點數(shù)1
]}
int BTREE depth(bitnode*BT){//如果(BT==null),則查找二叉樹的深度。//空樹返回0return 0else{int dep1=BTREE depth(BT->lchild)//遞歸調(diào)用逐層分析int dep2=BTREE depth(BT->rchild)if(dep1>dep2)return dep1 1esel return dep2 1}int leave(bitnode*BT){//如果(BT==null)返回0else{if(BT->lchild==null&;bt->rchild)}==Null)return 1elsereturn(leave(bt->lchild)leave(bt->rchild))}}}這是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的練習(xí)。它是遞歸的形式。當(dāng)你理解它的時候,你需要考慮一下,但是用這種方式寫函數(shù)會相對簡單。
二叉樹求葉子結(jié)點個數(shù)的算法(遞歸遍歷)?
1. 計算樹的深度d。2因為它是一個完整的二叉樹,非終結(jié)節(jié)點數(shù)={2^(D-1)}-1//遞歸計算樹的深度int depth(treenode*t){if(t==null)返回0 else{return max(depth(t->left),depth(t->right))1}//計算完整的二叉樹,非葉節(jié)點數(shù)int countnode(treenode*t) {int d=深度(t)返回功率(2,d-1)-1}