Loading AI tools
来自维基百科,自由的百科全书
平衡樹是電腦科學中的一類數據結構,為改進的二叉搜尋樹。一般的二叉搜尋樹的查詢複雜度取決於目標結點到樹根的距離(即深度),因此當結點的深度普遍較大時,查詢的均攤複雜度會上升[1]。為了實現更高效的查詢,產生了平衡樹。
此條目需要補充更多來源。 (2019年7月8日) |
在這裏,平衡指所有葉子的深度趨於平衡,更廣義的是指在樹上所有可能尋找的均攤複雜度偏低。
旋轉(rotate):幾乎所有平衡樹的操作都基於樹旋轉操作(也有部分基於重構,如替罪羊樹),通過旋轉操作可以使得樹趨於平衡。對一棵尋找樹(search tree)進行查詢、新增、刪除等動作,所花的時間與樹的高度h成比例,並不與樹的容量n成比例。如果可以讓樹維持平衡,也就是讓h維持在的左右,就可以在的複雜度內完成各種基本操作[1]。
插入(insert):在樹中插入一個新值。
刪除(delete):在樹中刪除一個值。
查詢前驅(predecessor):前驅定義為小於x,且最大的數。
查詢後繼(successor):後繼定義為大於x,且最小的數。
在維護節點大小(size)後,可以支援以下操作:
查詢排名(rank):排名定義為比x小的數的個數加一。
查詢第k大:即排名為k的數。
以下數據結構支援平衡樹大多數操作,但實現有根本不同:
用於表示有序的線性數據結構,如優先佇列、關聯陣列、鍵(key)-值(value)的對映等。自平衡的二叉搜尋樹與雜湊表的相比,各有優缺。平衡樹在按序遍歷所有鍵值時是量級最佳的,雜湊表不能。自平衡二叉搜尋樹在尋找一個鍵值時,最壞情況下時間複雜度優於雜湊表, 對比;但平均時間複雜度遜於hash表,對比。
平衡樹的排序方法,雖然在平均時間複雜度上也是,但由於cache效能、樹的調整操作等,效能上不如快速排序、堆積排序、合併排序等同為複雜度的排序。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.