插入以下元件創建堆的問題:通過按照該次序
通過插入在它們被給定的順序的下列元件創建堆。 每次插入和滴流後顯示堆。 (堆應實施以保持 最高鍵值在頂部)。
5 4 6 7 9 8 1 2 3
一旦你創建完堆,從中取出每個元素。 每次移除和滴流後顯示堆。指示每個 步驟中哪個元素已被刪除。
我知道如何將一個元素插入到堆中,但是如何創建它?我真的不知道如何從堆中刪除元素。
插入以下元件創建堆的問題:通過按照該次序
通過插入在它們被給定的順序的下列元件創建堆。 每次插入和滴流後顯示堆。 (堆應實施以保持 最高鍵值在頂部)。
5 4 6 7 9 8 1 2 3
一旦你創建完堆,從中取出每個元素。 每次移除和滴流後顯示堆。指示每個 步驟中哪個元素已被刪除。
我知道如何將一個元素插入到堆中,但是如何創建它?我真的不知道如何從堆中刪除元素。
我將承擔二元堆了我的答案,有很多不同的堆,但因爲這聽起來像功課,是一個相當基本的問題,我西港島線涵蓋最基本的堆有:
好了,先堆是空的。
然後插入5,所以堆現在是:
5
然後你在底部插入4。 4小於5,所以我們不改變它的父母的位置。堆現在是:
5
/
4
然後我們在底部插入6,在5下面(總是從左到右插入底部)。我們比較新插入的節點(6)與它的父(5)的價值,並實現我們需要交換它們,以不違反堆性質:
6
/\
4 5
現在我們插入7在下一個可用點(低於4),並與它的父,因爲7> 4.然後我們再交換交換它(或滴流),作爲7> 6,並得到:
7
/\
6 5
/
4
等等...
這聽起來像一個家庭作業問題,應該標記爲這樣。而且你應該親手做。 – Antimony
你嘗試了什麼?你究竟在哪裏卡住?請提供您初步試用的草圖(即使它是錯誤的),以便我們能更好地瞭解您的問題,並提供更好的答案 – amit
您能否改述您的問題?我爲''感到困惑,但是如何創建它?''部分 – Alexander