Q
有效最小堆積
-3
A
回答
1
在基於陣列最小堆的項目被存儲在一個完整的二叉樹。假設基於0的數組,這意味着索引i
中項目的左側子項將在索引2i + 1
中,右側子項將位於索引2i + 2
中。
最小堆不變是每個節點都小於它的後代。因此,爲了檢查堆是否合法,您需要做的就是遍歷所有內部節點,並確保這個條件成立,即索引i中的每個內部堆節點a[i] < a[2*i + 1] && a[i] < a[2*i + 2]
。
0
如果有幫助,這裏是更多圖形化的堆。不變量是每個父母都小於兩個孩子。
0
6 2
26 24 22 20
48 46 44
正如你可以看到每個節點都比它的父節點大,所以這是一個有效的最小堆。
0
相關問題
- 1. 最大堆大小無效
- 2. 有沒有最小的堆大小
- 3. Android studio,最大堆大小無效
- 4. 關於堆(最大堆和最小堆)
- 5. highcharts堆積面積
- 6. 創建來自給定陣列的最小堆積
- 7. 如何在刪除min之後「堆積」基於數組的最小堆?
- 8. 創建最小堆或最大堆
- 9. Cassandra最小堆大小
- 10. 二叉樹上的最大堆積
- 11. 構建最小堆
- 12. 最小堆算法
- 13. NVD3堆積面積圖
- 14. 堆積DIVs - 動態高度頂部DIV(有效的CSS?)
- 15. 有效APK文件的最小大小
- 16. 堆積溢出
- 17. HighCharts堆積柱
- 18. 堆積故障
- 19. Bootstrap堆積列
- 20. 堆積列軌
- 21. 圖堆積Barplot
- 22. UITextField - 堆積
- 23. 訂貨堆疊由大小在GGPLOT2堆積條形圖
- 24. 計算堆的最後一級的堆積
- 25. -Xms:初始堆大小或最小堆大小?
- 26. 堆積條形圖
- 27. 堆積條形圖
- 28. 圖像堆積python
- 29. Bootstrap列不堆積
- 30. CSS - 堆積邊框
我現在明白這個問題。但是,現在我必須添加和從最小堆刪除初始配置:[0,2,4,6,8,10,12,14] 插入1 刪除4 刪除0 插入3 –
我認爲插入1會產生[0,1,4,2,8,10,12,14,6] –
@WilliamDiuguid:插入意味着「追加到數組的末尾,並與父親交換,而父母大於自我」這符合你的例子。刪除的意思是「用最後一個元素交換根節點,並將該元素與其子元素中最小的元素交換,直到它是一個葉子或小於其子元素」。因爲交換的6碰巧在正確的位置,所以移除4會是[0,1,6,2,8,10,12,14]。 – Guvante