国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【算法】數據結構與算法分析學習筆記——各類二叉查找樹的吐血整理

2019-11-08 02:19:06
字體:
來源:轉載
供稿:網友

看完《數據結構與算法分析》,各種二叉查找樹簡直看得要崩潰,這里整理一下,也便于以后自己使用。

 查找(平均/最壞)插入(平均/最壞)刪除(平均/最壞)優點缺點
二叉查找樹BSTO(logN)/O(N)O(logN)/O(N)O(logN)/O(N)編程代碼最簡單樹可能會不平衡,最壞情況會達到O(N)
AVL樹O(logN)/O(logN)O(logN)/O(logN)O(logN)/O(logN)增加了平衡條件,保證了最壞情況依然是O(logN)編程復雜,數據結構相對復雜
伸展樹SplayTreeO(logN)/O(N)O(logN)/O(N)O(logN)/O(N)數據結構相對簡單,雖然有最壞情況,但并不影響總體速度仍然存在O(N)的情況
伸展樹(自頂向下)O(logN)/O(N)O(logN)/O(N)O(logN)/O(N)相比自底向上,非遞歸實現,且只需要O(1)的額外空間但攤還時間不變代碼復雜
紅黑樹RedBlackTreeO(logN)/O(logN)O(logN)/O(logN)O(logN)/O(logN)AVL的變種,繼承了AVL的時間,平衡的好有大量的旋轉,刪除復雜,總體代碼也復雜
AA-樹O(logN)/O(logN)O(logN)/O(logN)O(logN)/O(logN)代碼實現會大量簡化,且時間繼續保持旋轉的次數會相對多
treap樹O(logN)/O(N)O(logN)/O(N)O(logN)/O(N)這是最簡單的一種樹了,效率甚至高于伸展樹依然是存在最壞情況的
二叉查找樹BST:最原始的查找樹,后面所有樹都要叫它爸爸爺爺了,也不用多說啥。

AVL樹:主要使用遞歸實現,非遞歸有點麻煩,通過記錄每個節點的高度,當高度差達到2時,進行旋轉,達到自平衡。實現可以參考:http://blog.csdn.net/d521000121/article/details/54312142

伸展樹SplayTree:思想是每次要找的都通過旋轉放到根上(叫做展開),方便后續的查找,所以當某些數據連續被查找又或者要查找的數據非常接近,此時速度便會非常快。

                                   而且最壞情況不會保持。附上一個大神的博客:

   http://www.cnblogs.com/vamei/archive/2013/03/24/2976545.html

伸展樹(自頂向下):從底向上需要遞歸,同時就是要額外空間,但自頂向下只需要常數空間即可,且可用非遞歸實現,所以個人認為這個算法會更快?

                                        注意這里生成的樹與自底向上的會有區別。實現的話書上已經非常詳細了。

紅黑樹RedBlackTree:AVL的變種,通過標記節點是紅色還是黑色,再給樹一系列的約束條件,達到自平衡的功能,從理論上也證明了生成的樹已經接近最優。

  再附上大神博客:http://blog.csdn.net/chenhuajie123/article/details/11951777

AA-樹:先有二叉B-樹,再有BB-樹,再加上一點紅黑樹的條件,就是AA-樹(mdzz。。。)

       講解這個比較好:http://blog.csdn.net/zhaojinjia/article/details/8121156,實現書上有

treap樹:很簡單的一個想法,就是查找二叉樹+堆,對于每個節點,會生成一個隨機數叫優先級,treap數除了滿足查找二叉樹的條件外,其節點的優先級要滿足堆序,

 不滿足的通過左旋轉和右旋轉維護。詳細參考:http://blog.csdn.net/pi9nc/article/details/12244591


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大新县| 阿拉善盟| 浏阳市| 莒南县| 万载县| 资源县| 修文县| 温泉县| 革吉县| 红原县| 东台市| 永城市| 博罗县| 洛川县| 呼图壁县| 图木舒克市| 贵港市| 宣武区| 宕昌县| 武山县| 囊谦县| 青神县| 信宜市| 大关县| 义马市| 岳池县| 峡江县| 山丹县| 温宿县| 山西省| 上杭县| 湄潭县| 麟游县| 新竹县| 措美县| 会昌县| 银川市| 杭锦后旗| 绥德县| 天祝| 齐齐哈尔市|