2010-01-22 26 views
6

我一直停留了一會兒一個問題,想知道是否有人可以點我在正確的方向:合併兩個完美的二進制堆?

假設二叉堆使用的是基於指針的樹表示,而不是一個數組的表示。考慮將二進制堆LHS與RHS合併的問題。假設這兩個堆是完全完整的樹,分別包含(2^L-1)和(2^R-1)個節點。
給兩個O(log N)算法合併兩個堆,一個是L = R,一個是| L - R | = 1.

這是一個家庭作業問題,我只需要指出正確的方向。

+0

LHS樹是否需要從左邊開始,還是這只是一個方便的名稱? – outis 2010-01-22 03:07:15

回答

5

提示L = R:假裝你剛剛刪除了根目錄。讓我知道你是否需要更多。

+0

非常感謝!我現在明白了! – user220755 2010-01-22 03:08:57

+0

這是一個很好的提示。我無法弄清楚的是,什麼是教授。與| L-R |相處= 1?似乎這個提示的結果算法也適用於這種情況。 – PeterAllenWebb 2010-01-22 03:09:56

+1

考慮基於數組的堆的屬性,以及如果| L-R | = 1,算法暗示的方式會違反這些屬性中的一些。實際上,這不僅僅是基於陣列的堆;考慮形狀屬性。 – outis 2010-01-22 03:14:43