2014-04-07 58 views
0

正如標題中提到的,二叉搜索樹中最左邊的節點總是包含最小值?在搜索路徑中,比如說A是最左邊的節點,B是父節點,C是最右邊的節點。有沒有任何例子,訂單a < = b < = c並不總是這樣?我知道可以進行輪換以確保平衡性能得以維持,但是我不能拿出一個例子,其中事物並不總是平衡的,以至於不總是如此。我只是在學習這個數據結構,與數組和列表相比,它絕對不同於我。是的,這是一個給我的練習。我只想要一些提示/想法!二叉搜索樹 - 最左邊的節點總是包含最小值?

回答

1

您的問題的直接答案是「是的」,但是應該限定這是基於假設您正在通常在數據結構類中教授的方式構建樹。

我的意思是,如果您確實根據問題的值是否小於或大於當前節點來確定是向左還是向右插入節點,那麼答案是肯定的。顯然,如果您使用其他標準來做出決定,那麼這可能會改變。 :)由於這種策略,你可以保證沒有比左邊路徑下的父節點更大的值。

這實際上是二叉樹的巨大力量進來的地方。然而,它的含義是,如果插入的數據分佈不均勻,最終可能會出現一個朝一個方向嚴重偏斜的樹。這是一個問題,因爲這種樹的一部分目的是在插入時間和搜索時間之間進行權衡。如果樹歪斜了,沒有什麼好處,事實上,找到一個節點比平面陣列中可能需要更長的時間。

這將引導您討論均衡樹木和AVL樹木。爲了保證任何搜索的最壞情況特定Big O值,每次插入導致左右節點數量變得太平衡時,樹會重新平衡。雖然這會增加更多的插入和刪除開銷,但保證最糟糕的情況在您擁有大量數據時非常值得。

希望你玩得開心!數據結構是一個迷人而有趣的學習過程!