我有這樣一個問題,在堆數據結構中,左邊的孩子可能不止是一個正確的孩子在自己的水平?我的意思是考慮這三個數字9,5,8,我想創建一個最大堆數據結構,這樣根就會是9,它是真的,8是它的左邊的孩子,5是它的正確孩子? 請幫助我謝謝關於堆(最大堆和最小堆)
0
A
回答
2
這沒關係。 max-heap中的節點必須具有較低的子節點,並且min-heap中的節點必須具有較大的子節點。這些是唯一的要求。
0
最大堆性能:
- Root是最大元素。 O(1)時間來搜索最大元素。
- 兒童總是比任何子樹的根小。(有左和右孩子之間沒有條件)
- 最小元件位於簧片元件某處,即爲O(n/2)==Ô (n)需要時間來找到最小元素。
最小堆性能:
- 根是最小的元素。 O(1)搜索mim元素的時間。
- 兒童總是比任何子樹的根值。(有左和右孩子之間沒有條件)
- 最大元件位於簧片元件某處,即爲O(n/2)==Ô (n)需要時間才能找到最大元素。
因此,堆不適合搜索,但它用於排序元素數組,因爲搜索需要線性O(n)時間。
對於搜索,我們總是可以選擇在O(h)時間執行相同操作的二進制搜索樹(BST)。在最好的情況下,如果BS樹是平衡的,它將在O(logn)中進行搜索。
相關問題
- 1. 創建最小堆或最大堆
- 2. 最小堆和最大堆之間切換基於標記
- 3. Cassandra最小堆大小
- 4. Nexus的最大堆大小?
- 5. 最大堆大小無效
- 6. 致力於堆VS最大堆
- 7. Glassfish DAS OutOfMemory,總堆使用率低於最大堆大小
- 8. -Xms:初始堆大小或最小堆大小?
- 9. 堆排序 - 堆(最小/最大)用於升序和降序排序?
- 10. 爲JBoss指定最佳的最小和最大堆大小
- 11. 堆排序,最小堆使用還是最大?
- 12. 是否可以使用最小堆作爲最大堆?
- 13. 構建最小/最大二元堆
- 14. iphone os支持的最大堆大小和堆棧大小是多少?
- 15. 最大堆和插入
- 16. 構建最小堆
- 17. 最小堆算法
- 18. 最大堆排序
- 19. 最大堆實現
- 20. java堆設置中的最大堆大小的限制
- 21. 最大堆之間並排序堆
- 22. JVM最小堆大小推薦原因?
- 23. 有沒有最小的堆大小
- 24. 最大堆棧大小使用
- 25. 預留Java JVM最大堆大小
- 26. Android studio,最大堆大小無效
- 27. 最大調用堆棧大小
- 28. 如何找到最大堆棧大小?
- 29. java集最大堆棧大小
- 30. Android上本機堆的最大大小?
因此,我們如何設置父項的左右子項沒有規則?因爲堆幾乎是完整的二叉樹,我認爲這是二叉樹中的一條規則,讓孩子應該少於正確的孩子!我認爲對於我上面的例子,我應該寫「root:9」和「leftChild:5」和「rightChild:8」,不是嗎? – user355002 2010-06-25 07:16:23
你通常會建立一個最大堆的方式是從數組的中間開始第一個元素,並通過交換節點遞歸地讓每個節點在樹中向下篩選。這可以在O(n)時間完成。它不是一個二叉搜索樹,所以兄弟節點之間沒有特別的關係,除了它們比它們的父節點更小(或者在min-heap的情況下更大)之外。 – 2010-06-25 07:25:34
aha,如果我們想在這個數據結構中搜索一個關鍵字,我們不需要將它作爲一個二叉搜索樹? – user355002 2010-06-25 07:45:20