关于树,各种平衡树查找树的资料合集~~
生活随笔
收集整理的這篇文章主要介紹了
关于树,各种平衡树查找树的资料合集~~
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們知道,對于一般的二叉搜索樹(Binary Search Tree),其期望高度(即為一棵平衡樹時)為log2n,其各操作的時間復雜度(O(log2n))同時也由此而決定。但是,在某些極端的情況下(如在插入的序列是有序的時),二叉搜索樹將退化成近似鏈或鏈,此時,其操作的時間復雜度將退化成線性的,即O(n)。我們可以通過隨機化建立二叉搜索樹來盡量的避免這種情況,但是在進行了多次的操作之后,由于在刪除時,我們總是選擇將待刪除節點的后繼代替它本身,這樣就會造成總是右邊的節點數目減少,以至于樹向左偏沉。這同時也會造成樹的平衡性受到破壞,提高它的操作的時間復雜度。 平衡二叉搜索樹(Balanced Binary Tree)具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。常用算法有紅黑樹、AVL、Treap、伸展樹等。在平衡二叉搜索樹中,我們可以看到,其高度一般都良好地維持在O(log2n),大大降低了操作的時間復雜度。 BST Binary Search Tree~ 若它的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大于它的根結點的值; 它的左、右子樹也分別為二叉搜索樹。
二叉搜索樹(Binary Search Tree),或者是一棵空樹,或者是具有下列性質的二叉樹:
二叉搜索樹的查找過程和次優二叉樹類似,通常采取二叉鏈表作為二叉搜索序樹的存儲結構。中序遍歷二叉搜索樹可得到一個關鍵字的有序序列,一個無序序列可以通過構造一棵二叉搜索樹變成一個有序序列,構造樹的過程即為對無序序列進行排序的過程。每次插入的新的結點都是二叉搜索樹上新的葉子結點,在進行插入操作時,不必移動其它結點,只需改動某個結點的指針,由空變為非空即可。搜索,插入,刪除的復雜度等于樹高,O(log(n)).
?
轉載于:https://www.cnblogs.com/Xiegg/p/3621531.html
總結
以上是生活随笔為你收集整理的关于树,各种平衡树查找树的资料合集~~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tengine ngx_http_sys
- 下一篇: 在linux下php挂接mysql.so