[理工] 資結 Symmetric Min-Max Heap

看板Grad-ProbAsk作者 (Metal 0-4)時間9年前 (2016/12/28 18:43), 9年前編輯推噓1(109)
留言10則, 1人參與, 最新討論串1/1
Symmetric Min-Max Heap http://www.lib.nctu.edu.tw/n_exam/exam98/cslz/cslz1001.pdf 洪逸在2015年的資結上課有提到 Symmetric Min-Max Heap 但我沒抄到delete Max 的Algo 請問下面的題目 刪除兩次最大值的過程為何? 題目 : 空 : /   \ :         2       80 :        /  \    /  \ :       8   60   4    50 :      / \  / \  / \  / \ :    12  20 10 16 14 30 4 40 : Ans: 1st : 空 : /   \ :         2       60 :        /  \    /  \ :       8   40   4    50 :      / \  / \  / \  / :    12  20 10 16 14 30 6 Ans : 2nd : 空 : /   \ :         2       50 :        /  \    /  \ :       8   40   4    30 :      / \  / \  / \ :    12  20 10 16 6 14 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.92.142 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1482921785.A.D6E.html

12/29 11:42, , 1F
最大值會在root的右子點先刪除 為了保持complete所以同時
12/29 11:42, 1F

12/29 11:42, , 2F
也刪除最後一個節點40想要插入到max值的空缺 先檢查左子
12/29 11:42, 2F

12/29 11:42, , 3F
點小於等於右子點 2<=40沒問題 接著取兩者的右子點(因為
12/29 11:42, 3F

12/29 11:42, , 4F
此子樹最大值必在這兩個之一) 60.50跟40比 60最大所以60
12/29 11:42, 4F

12/29 11:42, , 5F
放空缺 40往下移欲插入原本60的位子 一樣檢查8<=40沒問題
12/29 11:42, 5F

12/29 11:42, , 6F
取取20.16來比較 40最大 放到節點中 結束
12/29 11:42, 6F

12/29 11:44, , 7F
總之就是要保持smmh的所有性質就是了(左子<=右子) root
12/29 11:44, 7F

12/29 11:44, , 8F
的右點為除了root的最大值 root的左點為除了左點的最大值
12/29 11:44, 8F

12/29 11:45, , 9F
洪毅上課好像沒給演算法 我是直接看聖經本內容 或上網找
12/29 11:45, 9F

12/29 11:45, , 10F
應該也可以找得到演算法
12/29 11:45, 10F
謝謝 你這是第一次的結果 我回去找聖經本 ※ 編輯: ck960785 (114.136.12.173), 12/29/2016 13:15:42
文章代碼(AID): #1OOvSvrk (Grad-ProbAsk)