資結筆記|堆積樹(Heap Tree)

更新於 發佈於 閱讀時間約 1 分鐘

基本概念

基本上堆積樹(heap tree)屬於完全二元樹的一種,常用於找極值,有兩種堆積的方法如下


最大堆積樹(maximum heap)

根節點的值是所有節點中最大值,每個父節點的值一定大於等於子節點的值。

最小堆積樹(minimum heap)

根節點的值是所有節點中最小值,每個父節點的值一定小於等於子節點的值。

以上不論是最大還是最小堆積樹,同一層的值大小皆不需理會


建立堆積樹

一開始第一個值放在根節點,接著由左而右插入節點,當一層滿了則在往下一層建立新的節點,接著檢查有子節點的父節點進行調整,見下圖

假設以 10 21 5 9 13 28 3 建立最小堆積樹為例

(1)先依上述規則練利一棵樹,接著檢查有子節點的節點,有節點10、節點21、節點5,檢查的順序要跟建樹的順序反過來為5->21->10

raw-image

(2)因為節點5>節點3,故交換

raw-image

(3)因為節點21>節點9,故交換

raw-image

(4)因為節點10>節點3,故交換

raw-image

(5)因為節點10剛剛交換有動到這個節點所以再檢查一次,節點10>節點5,交換

raw-image

以上是建立最小堆積樹的方法,建立最大堆積樹就是反過來就可以囉~


新增節點

新增一個節點,就依照建立堆積樹的規則插入左下角,然後再做比大小調整順序就可以了

raw-image

取出堆積樹的極值

將根節點的值取出放入序列,將右下角的節點放到根節點的位置,接著一樣進行比大小然後調整位置。

raw-image


竹林裡的呢喃:堆積樹的實作也有待後續補充,下一篇是雜湊表(Hash Table)大家敬請期待囉~對了清明連假大家回家掃墓有沒有順便吃潤餅呢~最喜歡在潤餅裡加蛋絲跟配花生粉,阿姆阿姆😋














留言
avatar-img
留言分享你的想法!
avatar-img
資治通艦的沙龍
3會員
45內容數
人生中有的時候你會感知到,現在就是那個命運的分歧點,如果我不挽起袖子努力的話,我這一輩子大概就這樣了,所以我決定開始這個部落格,記錄我每天的努力,也希望可以分享學習的筆記與心得,大家可以一起交流學習。
資治通艦的沙龍的其他內容
2025/04/08
請使用 C 或 Java 語言寫一副程式,此副程式對一個長度為 10 的整數陣列 A[0:9],最多花費 15 次的數值比較運算,尋找陣列中的最小值及最大值,並分別存入 Min 及 Max。(注意:請加註解說明程式碼寫法) 【103.關務】
Thumbnail
2025/04/08
請使用 C 或 Java 語言寫一副程式,此副程式對一個長度為 10 的整數陣列 A[0:9],最多花費 15 次的數值比較運算,尋找陣列中的最小值及最大值,並分別存入 Min 及 Max。(注意:請加註解說明程式碼寫法) 【103.關務】
Thumbnail
2025/04/07
第 1 題 題目 設有一三維陣列(three dimensional matrix) A[1...u₁, 1...u₂, 1...u₃],請問其中一元素(element)A[i,j,k] 之儲存位置為何?其中 1 ≤ i ≤ u₁,1 ≤ j ≤ u₂,1 ≤ k ≤ u₃,請列出推導過程。
Thumbnail
2025/04/07
第 1 題 題目 設有一三維陣列(three dimensional matrix) A[1...u₁, 1...u₂, 1...u₃],請問其中一元素(element)A[i,j,k] 之儲存位置為何?其中 1 ≤ i ≤ u₁,1 ≤ j ≤ u₂,1 ≤ k ≤ u₃,請列出推導過程。
Thumbnail
2025/04/07
陣列和鏈結串列的比較以及陣列位址的計算方式
Thumbnail
2025/04/07
陣列和鏈結串列的比較以及陣列位址的計算方式
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
堆積樹(Heap Tree)是一種特殊的完全二元樹,常用於查找極值。本文介紹最大堆積樹和最小堆積樹的概念、建立方法、新增節點和取出極值的方法,並預告下一篇文章將介紹雜湊表。
Thumbnail
堆積樹(Heap Tree)是一種特殊的完全二元樹,常用於查找極值。本文介紹最大堆積樹和最小堆積樹的概念、建立方法、新增節點和取出極值的方法,並預告下一篇文章將介紹雜湊表。
Thumbnail
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
Thumbnail
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
Thumbnail
題目敘述 Binary Tree Maximum Path Sum 給定一個二元樹,請找出最大的區間路徑和是多少? 註: 區間路徑和 = 某個節點a -> 某個節點b的路徑節點值總和。
Thumbnail
題目敘述 Binary Tree Maximum Path Sum 給定一個二元樹,請找出最大的區間路徑和是多少? 註: 區間路徑和 = 某個節點a -> 某個節點b的路徑節點值總和。
Thumbnail
題目給定一個布林代數的二元樹,要求我們計算最後的結果。 葉子節點都是真假值 非葉子節點都是布林運算子
Thumbnail
題目給定一個布林代數的二元樹,要求我們計算最後的結果。 葉子節點都是真假值 非葉子節點都是布林運算子
Thumbnail
這篇文章,會帶著大家複習以前學過的二元搜尋樹(Binary Search Tree)框架, 並且以二分搜尋樹的概念與定義為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 二元搜尋樹(Binary Search Tree)的定義
Thumbnail
這篇文章,會帶著大家複習以前學過的二元搜尋樹(Binary Search Tree)框架, 並且以二分搜尋樹的概念與定義為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 二元搜尋樹(Binary Search Tree)的定義
Thumbnail
題目敘述 題目會給定一棵二元樹的根結點,要求我們判定這是否為一顆合法的奇偶二元樹? 奇偶二元樹的定義: 從上到下依序是第0層、第一層、...、第n層 偶數層裡面的節點值都必須是奇數,而且由左到右嚴格遞增。 奇數層裡面的節點值都必須是偶數,而且由左到右嚴格遞減。 題目的原文敘述 測試
Thumbnail
題目敘述 題目會給定一棵二元樹的根結點,要求我們判定這是否為一顆合法的奇偶二元樹? 奇偶二元樹的定義: 從上到下依序是第0層、第一層、...、第n層 偶數層裡面的節點值都必須是奇數,而且由左到右嚴格遞增。 奇數層裡面的節點值都必須是偶數,而且由左到右嚴格遞減。 題目的原文敘述 測試
Thumbnail
題目敘述 題目會給定一棵二元樹的根結點,要求我們找出這棵二元樹最後一層最左邊的值。 題目的原文敘述 測試範例 Example 1: Input: root = [2,1,3] Output: 1 Example 2: Input: root = [1,2,3,4,null,5,6
Thumbnail
題目敘述 題目會給定一棵二元樹的根結點,要求我們找出這棵二元樹最後一層最左邊的值。 題目的原文敘述 測試範例 Example 1: Input: root = [2,1,3] Output: 1 Example 2: Input: root = [1,2,3,4,null,5,6
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News