-1
我知道堆總是完整的二叉樹。但我想知道什麼時候堆滿了二叉樹?比如堆必須滿足什麼條件才能成爲完整的二叉樹?堆什麼時候變成完整的二叉樹?
我知道堆總是完整的二叉樹。但我想知道什麼時候堆滿了二叉樹?比如堆必須滿足什麼條件才能成爲完整的二叉樹?堆什麼時候變成完整的二叉樹?
爲了說明爲什麼堆狀況不重要,考慮通過簡單地爲每個節點分配其高度,很容易給出一個標記來滿足堆狀況的任何二叉樹。 (如果你想要獨特的標籤,你可以對樹進行拓撲排序並從根開始計數。)
因此完整性和豐滿度也是堆的正交概念(查看here瞭解完整,完整,兩者都不)。
但是,通常堆實現選擇確保堆條件的方式使得生成的二叉樹是完整的。一個實現普通二進制堆的標準方法是使用一個數組,然後用一個隱式二進制堆從左到右填充它(這是通常實現堆排序的方式)。
如果這是你指的那種堆,那麼約束會顯着收緊,因爲你總是從左到右一次填充樹。這應該是顯而易見的,爲什麼這樣的樹是完整的(所有級別,但最後一個總是完全填充)。
也應該很容易看出,它總是滿滿的,不完全之間交替: