已知一個序列,例如{100,6070,50,32,65},怎麼判斷是不是堆?
答案:把這個序列看成陣列型的二元樹,如果根結點是i,左子樹是2*i,右子樹是2*i 1。
堆分為最大堆與最小堆。
1.最大堆中所有父節點都比左子樹、右子樹大,例如已知序列,畫成堆就是:
所以已知序列是個最大堆。
2.最小堆中所有父節點都比左子樹、右子樹小,例如{32,50,60,70,100,65},畫成堆:
#符合以上兩種情況的序列就是堆
以上是堆序列怎麼判斷的詳細內容。更多資訊請關注PHP中文網其他相關文章!