導航:首頁 > 源碼編譯 > 二叉樹演算法求值

二叉樹演算法求值

發布時間:2025-08-29 01:43:34

Ⅰ 求二叉樹高度的原理、演算法是什麼,越詳細越好,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;
}

Ⅱ 二叉樹最小權路徑長度演算法

問題描述:給定一棵樹T,含有n個葉子節點,並且每個葉子節點都有一個權重值{A1,A2,A3...An}。目標是計算樹T的最小權路徑長度(WPL)。例如,2021年408這道題。

方法1:具體演算法如下。舉例說明。

首先構造哈夫曼樹。哈夫曼樹的構建順序無需特定規則,但按照某種規律繪制可以更清晰地展示思路。這里我們以左節點作為順序。

接著,依次累加所有葉子節點的帶權路徑長度。從構造的哈夫曼樹中可以得知所有節點的路徑長度,如「16」節點的路徑長度為2。因此,WPL=(16+21+30)*2+(10+12)*3=200。

方法2:這里簡要證明上述結論。

對於哈夫曼樹T1中的兩個兄弟葉子節點N1、N2,假設N1、N2的父節點為P1。N1的路徑長度為d。刪除N1、N2後得到的哈夫曼樹為T2。計算得到W(N1)+W(N2)=N1+N2+(N1+N2)*(d-1)。由此得出W(P1)=P1*(d-1)=W(N1)+W(N2)+N1+N2。因此,W(T1)=W(T2)+N1+N2。

按照哈夫曼樹構建過程,知道WPL(T1)=N1+N2+N3......+N,即WPL為所有葉子結點權重之和。

方法3:不繪制哈夫曼樹直接計算WPL。按照方法2的過程,每次找到最小的兩個節點後,直接累加到WPL里,並遞歸計算WPL。即WPL(T1)=min(n1+n2)+WPL(T2)。

代碼實現:

JS實現:

C語言實現:

閱讀全文

與二叉樹演算法求值相關的資料

熱點內容
cad命令大全圖表下載 瀏覽:389
程序員去印度工作 瀏覽:422
蘋果app活動怎麼導出 瀏覽:3
pdf轉高清圖片 瀏覽:33
人人玩棋牌源碼 瀏覽:345
如何獲取美團伺服器時間 瀏覽:342
php簡單加密演算法 瀏覽:791
什麼是開伺服器 瀏覽:607
cd4017單片機怎麼用 瀏覽:263
鳥哥pdf 瀏覽:242
忘記加密的密碼了怎麼辦 瀏覽:558
好友信息提示音在哪個文件夾 瀏覽:276
怎麼讓雲伺服器轉發本地埠 瀏覽:46
python數組剔除元素 瀏覽:15
推薦一款解壓的手機游戲 瀏覽:47
jsphp時間戳轉換日期 瀏覽:422
明日之後如何刪掉賬號伺服器 瀏覽:76
syjsks是什麼伺服器 瀏覽:606
中控軟體加密狗授權後變空白的 瀏覽:676
androidphp登陸 瀏覽:194