簡體   English   中英

一種在二進制最大堆中查找大於某個值X的所有節點的算法

[英]An algorithm to find all nodes greater than some value X in a binary max heap

這是我到目前為止所擁有的。

我們可以使用從堆的根開始的遞歸算法(因為根是最大數。然后,我們將檢查X是否大於我們的根。如果X大於根目錄我們停止了,如果沒有,我們打印根目錄,然后檢查它是左子節點還是右子節點,依此類推...

這是一個好的算法嗎? 我算法的最壞情況下的時間復雜度也將是O(N),其中N是堆中節點的數量。

這個算法很好。 實際上,它在訪問最多3 * k節點時在時間復雜度方面是最優的,其中k是滿足給定條件的節點數(之所以如此,是因為只有滿足條件或滿足條件的節點才被訪問父母)。

是的,最壞的情況是O(N) 但是您不能做得更好,因為您可能需要打印堆中的所有節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM