BST比哈希的優勢

對於search insert delete操作, Hash Table的時間複雜度是O(1)。

對於BST(self-balancing Binary Search Tree, 比如 紅黑樹,AVL樹等)時間複雜度是O(LgN)。

看起來Hash Table在所有操作中都要優於BST的。那BST有什麼優勢呢?

1. 獲取所有的有序的key

我們可以從BST樹種獲取所有的有序的key, 不需要太多額外的操作。 但是沒有辦法方便的從HashTable中獲取到所有的有序key。

2. 範圍類的操作

做排序分析,找比某個值大(或小),做範圍查詢,用BST做是很容易的。 like操作, 排序,也可以用BST搞定。 但是Hast table是做不了的。

3. 實現

BST是很容易實現的, 我們可以用我們自己的方式實現BAST。 但是實現HASH,我們必須要依賴於編程語言提供的類庫。

4. 可控

對應BST,所有的操作都可以保證在O(LgN)的時間內完成。 但是對於Hash, 平均時間可能是O(1),但有時是非常耗時的,特別是在table resize的時候。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章