2012-06-24 61 views
0

插入以下元件創建堆的問題:通過按照該次序

通過插入在它們被給定的順序的下列元件創建堆。 每次插入和滴流後顯示堆。 (堆應實施以保持 最高鍵值在頂部)。

5 4 6 7 9 8 1 2 3 

一旦你創建完堆,從中取出每個元素。 每次移除和滴流後顯示堆。指示每個 步驟中哪個元素已被刪除。

我知道如何將一個元素插入到堆中,但是如何創建它?我真的不知道如何從堆中刪除元素。

+1

這聽起來像一個家庭作業問題,應該標記爲這樣。而且你應該親手做。 – Antimony

+0

你嘗試了什麼?你究竟在哪裏卡住?請提供您初步試用的草圖(即使它是錯誤的),以便我們能更好地瞭解您的問題,並提供更好的答案 – amit

+0

您能否改述您的問題?我爲''感到困惑,但是如何創建它?''部分 – Alexander

回答

1

我將承擔二元堆了我的答案,有很多不同的堆,但因爲這聽起來像功課,是一個相當基本的問題,我西港島線涵蓋最基本的堆有:

好了,先堆是空的。

然後插入5,所以堆現在是:

5 

然後你在底部插入4。 4小於5,所以我們不改變它的父母的位置。堆現在是:

5 
/
4 

然後我們在底部插入6,在5下面(總是從左到右插入底部)。我們比較新插入的節點(6)與它的父(5)的價值,並實現我們需要交換它們,以不違反堆性質:

6 
/\ 
4 5 

現在我們插入7在下一個可用點(低於4),並與它的父,因爲7> 4.然後我們再交換交換它(或滴流),作爲7> 6,並得到:

7 
/\ 
    6 5 
/
4 

等等...

+0

答案如何有價值? – dfeuer

+3

@dfeuer:這是一個哲學問題嗎? – timos