導航:首頁 > 編程語言 > java二叉樹遞歸演算法

java二叉樹遞歸演算法

發布時間:2025-02-18 21:24:24

1. 編寫計算二叉樹最大寬度的演算法

分析:二叉樹是遞歸定義的,其計算二叉樹的高度可以採取遞歸方式 int Height(btre bt)//求二叉樹bt的深度{int hl,hr; if (bt= =NULL) return(0); else { hl=Height(bt->lch); hr=Height(bt->rch); if(hl>hr) return (hl+1); else return(hr+1); } }分析:求二叉樹的最大寬度可採用層次遍歷的方法,記下各層結點數,每層遍歷完畢,若結點數大於原先最大寬度,則修改最大寬度。int Width(BiTree bt)//求二叉樹bt的最大寬度{if (bt==null) return (0); //空二叉樹寬度為0 else {BiTree Q[]; //Q是隊列,元素為二叉樹結點指針,容量足夠大front=1;rear=1;last=1;//front隊頭指針,rear隊尾指針,last同層最右結點在隊列中的位置 temp=0; maxw=0; //temp記局部寬度, maxw記最大寬度 Q[rear]=bt; //根結點入隊列 while(front<=last) {p=Q[front++]; temp++; //同層元素數加1 if (p->lchild!=null) Q[++rear]=p->lchild; //左子女入隊if (p->rchild!=null) Q[++rear]=p->rchild; //右子女入隊 if (front>last) //一層結束, {last=rear; if(temp>maxw) maxw=temp; //last指向下層最右元素, 更新當前最大寬度 temp=0; }//if }//while return (maxw); }//結束width

2. Java數據結構二叉樹深度遞歸調用演算法求內部演算法過程詳解

二叉樹
1
2 3
4 5 6 7
這個二叉樹的深度是3,樹的深度是最大結點所在的層,這里是3.

應該計算所有結點層數,選擇最大的那個。

根據上面的二叉樹代碼,遞歸過程是:

f(1)=f(2)+1 > f(3) +1 ? f(2) + 1 : f(3) +1

f(2) 跟f(3)計算類似上面,要計算左右結點,然後取大者

所以計算順序是f(4.left) = 0, f(4.right) = 0

f(4) = f(4.right) + 1 = 1

然後計算f(5.left) = 0,f(5.right) = 0

f(5) = f(5.right) + 1 =1

f(2) = f(5) + 1 =2

f(1.left) 計算完畢,計算f(1.right) f(3) 跟計算f(2)的過程一樣。

得到f(3) = f(7) +1 = 2

f(1) = f(3) + 1 =3

if(depleft>depright){
returndepleft+1;
}else{
returndepright+1;
}

只有left大於right的時候採取left +1,相等是取right

閱讀全文

與java二叉樹遞歸演算法相關的資料

熱點內容
ev3編程模塊 瀏覽:269
程序員脖子痛如何緩解 瀏覽:529
java加密aes對稱加密演算法 瀏覽:595
格式工廠視頻壓縮方法 瀏覽:475
編譯後的函數和原始函數如何對應 瀏覽:621
闡述郵件加密解密過程 瀏覽:400
敲沙子聲控解壓 瀏覽:54
計算機教室用什麼伺服器 瀏覽:800
華為暢享9怎麼設置簡訊加密 瀏覽:285
中國現代編譯器 瀏覽:850
如何得到app專欄 瀏覽:453
魔獸世界日本伺服器什麼職業多 瀏覽:729
表格加密怎麼設置只讀模式打開 瀏覽:884
哪個app可以不用花唄分期 瀏覽:860
SSL是對稱加密嗎 瀏覽:46
捷途app鑰匙怎麼用 瀏覽:960
享省油app怎麼在加油站使用 瀏覽:250
crc演算法的實現c語言 瀏覽:187
風光攝影pdf 瀏覽:938
頭部按摩器可以緩解壓力嗎 瀏覽:652