青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數據加載中……

AVL樹刪除節點算法

在這篇文章里說了,AVL樹平衡的兩個條件是:1)首先,二叉查找樹要求一個樹的根節點必然大于(或小于)其左子樹中的所有節點, 同時必然小于(或大于)其右子樹中的所有節點,也就是說,如果按照中序遍歷二叉查找樹, 它必然是嚴格遞增(或遞減)的.2)AVL樹的平衡條件要求任何一顆子樹,其左右子樹的高度差不超過1.我們要求一顆樹是AVL樹,必須嚴格符合以上的兩 個條件.

可以從這兩個條件著手考慮AVL樹中節點的刪除.

首先,采用二叉查找樹的刪除節點算法刪除一個節點,這個算法在這里有闡述, 此時必然保證了第一個條件.

其次, 從所刪除節點的父節點開始向上搜索,看看哪里出現了不平衡的地方, 出現不平衡的情況肯定是因為這條路徑上一個節點的兄弟節點高度大于該節點高度,可以通過旋轉將這個兄弟節點上升一層, 這樣就滿足了第二個條件.

以一個例子進行說明:
      10              10                18
     
/  \            / \               / \
    
5   18          5  18             10  12
   
/    / \   ==>      / \    ==>     /   / \
  
4    12 19          12  19         5   11  19
       
/              /
      
11             11

假設這里要刪除的節點是4,在刪除了節點4之后, 沿著4的父節點向上查詢, 看看哪里出現了不平衡的情況, 發現節點5的高度比它的兄弟節點低了2, 那么這里要做的就是把這個兄弟節點,也就是18往上移一層, 采用的就是AVL樹的單旋轉方法,最后樹重新達到了AVL樹的兩個條件.

本來想實驗一下這個算法,但是原來這里的實現中, 節點的struct沒有保存父節點的指針, 修改起來比較麻煩, 就不做實現了.
不知道這個算法是不是正確的,目前僅是我憑空的推理, 如果有其它地方提到了別的AVL樹刪除節點算法, 或者有地方證實了這個算法是可行的,請告訴我一聲,謝謝.

補充:
如果這個算法是可行的,那么還有進一步優化的可能.
分兩種情況:1)刪除節點有兩個子節點, 此時, 替代該節點的新結點, 其高度不會發生變化, 也就不會破壞平衡, 此時不需要進行旋轉操作, 也就不需要往上走查詢平衡是否被破壞了.
2)刪除節點只有一個節點或者沒有節點,此時平衡才有可能被破壞, 按照上面的算法進行平衡操作.

posted on 2008-09-17 12:38 那誰 閱讀(8257) 評論(9)  編輯 收藏 引用 所屬分類: 算法與數據結構

評論

# re: AVL樹刪除節點算法[未登錄]  回復  更多評論   

每一次插入的時候,從插入的節點開始往上找,每次遇到一個不平衡的父節點都旋轉一次,一直到根節點為止。

刪除的時候,將中序右繼換過來之后,進行上面的操作。
2008-09-17 12:57 | 陳梓瀚(vczh)

# re: AVL樹刪除節點算法[未登錄]  回復  更多評論   

不一定需要父節點指針,也可以通過保存從根結點到被刪除節點的路徑,然后網上調整.
2008-09-17 18:08 | 季陽

# re: AVL樹刪除節點算法  回復  更多評論   

老實說,俺從來沒實現過 AVL Tree。實踐中,凡是能夠使用 AVL Tree 的地方都被 Red-Black Tree 代替了。
2008-09-17 19:40 | Lucifer

# re: AVL樹刪除節點算法  回復  更多評論   

呵呵什么時候能探討一下自平衡樹(無論AVL還是RB)的節點修改操作?有否除了“節點修改=刪除+重新添加”外的更優算法?
2008-09-29 10:57 | E劍仙

# re: AVL樹刪除節點算法  回復  更多評論   

將18左旋轉后到達不到平衡
插入的時候不用插入后才往上找不平衡的結點,直接在找插入的時候就能標記好插入后會導致不平衡的點,然后直接判斷如何使用旋轉就可以了
2008-10-10 10:12 | dragon

# re: AVL樹刪除節點算法  回復  更多評論   

“補充:如果這個算法是可行的,那么還有進一步優化的可能.
分兩種情況:1)刪除節點有兩個子節點, 此時, 替代該節點的新結點, 其高度不會發生變化, 也就不會破壞平衡,”

這個說法我有點疑問,比如下面這個例子:
1
/ \
2 3
/
4
如果刪除的是結點1,那么3將被替換到1的位置,而并不像你說的那樣高度沒發生變化。所以我覺得這種情況仍然要進行旋轉操作。
不知道我理解的對不對,請多指教。
2009-01-14 03:14 | GUEST

# re: AVL樹刪除節點算法  回復  更多評論   

用遞歸最好
2009-02-25 22:57 | zng

# re: AVL樹刪除節點算法  回復  更多評論   

樓上的樓上GUEST 你的疑問是正確的 不管刪除的節點有幾個子節點 都是要進行旋轉的。
還有就是 你舉的這個例子不能通過單旋解決問題 應該要RL旋轉才可以 結果應該是這樣的
12
 / \
 10 18
/ \  \
5 11  19
2009-09-24 19:31 | kiven

# re: AVL樹刪除節點算法  回復  更多評論   

Insert 一個結點時, 檢查到不平衡時只要一次(LL, LR, RL, RR)調整就可以了;

Delete 一個結點時, 檢查到不平衡時需要把不平衡向上傳遞, 同時可能因為調整后產生不平衡而向下調整;

相關內容可以參見我的博客: http://blog.csdn.net/kyee
2010-06-20 00:00 | Kyee
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精品网| 国内偷自视频区视频综合| 亚洲综合成人婷婷小说| 99精品国产99久久久久久福利| 欧美国产一区二区| 91久久精品国产91久久性色| 久久永久免费| 亚洲二区视频| 亚洲人成艺术| aⅴ色国产欧美| 亚洲中午字幕| 蜜桃av一区二区三区| 欧美v日韩v国产v| 欧美日韩123| 国产综合欧美| 一区二区三区 在线观看视频| 午夜精品婷婷| 欧美.日韩.国产.一区.二区| 亚洲麻豆一区| 欧美亚洲日本网站| 欧美激情一区二区三区高清视频| 国产精品视频网址| 亚洲电影观看| 香蕉视频成人在线观看| 欧美成人xxx| 亚洲欧美日本视频在线观看| 免费成人黄色片| 国产精品综合不卡av| 1204国产成人精品视频| 亚洲一区黄色| 美女国产一区| 亚洲一区三区视频在线观看| 久久频这里精品99香蕉| 欧美日韩在线视频一区二区| 激情欧美日韩| 午夜精品久久久久影视| 亚洲国产免费看| 欧美亚洲免费| 国产精品一级二级三级| 亚洲视频网站在线观看| 亚洲国产免费| 欧美激情在线观看| 亚洲精品1区2区| 久久综合中文色婷婷| 香蕉成人啪国产精品视频综合网| 欧美视频在线观看视频极品| 亚洲精品在线二区| 亚洲国产精品成人精品| 久久久久国内| 国产小视频国产精品| 亚洲欧美日韩一区二区在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 99精品视频网| 欧美激情在线播放| 老巨人导航500精品| 一区二区在线观看视频在线观看| 欧美一区二区视频97| 99这里只有精品| 欧美日本高清一区| 一本大道久久a久久精品综合| 国产性天天综合网| 国产日韩精品电影| 亚洲视频香蕉人妖| 亚洲最新在线视频| 欧美视频一区二区三区在线观看| 国产精品99久久久久久www| 亚洲精品免费在线观看| 欧美理论电影在线观看| 一区二区三区欧美视频| 亚洲免费成人av| 国产精品福利网站| 久久er99精品| 久久久人人人| 日韩视频免费观看| 一区二区三区毛片| 国产偷国产偷亚洲高清97cao| 久久久久久久91| 毛片基地黄久久久久久天堂| 亚洲国产综合在线| 亚洲精品国产精品国自产观看 | 亚洲精品中文字| 欧美日韩亚洲免费| 欧美一区二区视频免费观看| 久久国产精品久久久久久| 伊人久久av导航| 亚洲日本国产| 国产欧美va欧美不卡在线| 欧美aⅴ一区二区三区视频| 欧美精品在线看| 久久一区二区三区国产精品| 欧美18av| 国产精品美女久久久久久免费| 久久久久国产一区二区| 欧美va天堂| 欧美在线在线| 欧美日韩亚洲综合一区| 久久久久久久网站| 欧美美女操人视频| 久久国产综合精品| 欧美日韩高清在线一区| 久久精品视频网| 欧美日本视频在线| 久久夜色精品国产噜噜av| 欧美日韩国产首页| 蜜桃av噜噜一区二区三区| 欧美日韩一区二区在线视频| 老司机精品视频一区二区三区| 欧美日韩国产探花| 欧美激情第一页xxx| 国产精品一二| 亚洲美女视频| 亚洲欧洲日产国码二区| 欧美影视一区| 欧美在线free| 国产精品久久久久国产a级| 亚洲国产精品va在看黑人| 国内精品久久久久影院 日本资源| 夜夜爽www精品| 亚洲私拍自拍| 欧美精品 国产精品| 欧美成人午夜激情| 激情综合亚洲| 久久精品一区二区三区中文字幕| 亚洲免费大片| 亚洲精品一区二区三区蜜桃久| 亚洲欧美日韩国产成人精品影院| 亚洲免费观看高清完整版在线观看熊 | 久久久久欧美精品| 欧美中文字幕在线播放| 欧美性大战xxxxx久久久| 亚洲国产精品999| 91久久国产综合久久| 久热精品视频在线观看| 久久夜色精品国产亚洲aⅴ| 国产精品视频精品| 亚洲一区尤物| 亚洲女女女同性video| 欧美日韩精品国产| 夜夜嗨av一区二区三区中文字幕 | 黄网站免费久久| 欧美一区成人| 久久久久一区二区三区| 国产主播一区二区三区| 欧美一区综合| 麻豆成人综合网| 一区精品在线播放| 蜜桃av一区二区| 99国产精品久久久久老师| 亚洲永久免费视频| 国产欧美日韩综合一区在线观看 | 亚洲在线不卡| 国产精品日韩一区二区| 欧美一级精品大片| 麻豆av福利av久久av| 亚洲三级免费电影| 国产精品久久网站| 久久精品国产清高在天天线| 欧美高清自拍一区| 一本色道久久综合亚洲精品不卡| 欧美少妇一区二区| 午夜天堂精品久久久久| 毛片av中文字幕一区二区| 亚洲日韩第九十九页| 国产精品红桃| 久久综合久久久久88| 999在线观看精品免费不卡网站| 性视频1819p久久| 亚洲第一页在线| 国产精品99一区| 美女视频黄免费的久久| 99国产精品久久久久老师 | 美女视频一区免费观看| 亚洲巨乳在线| 你懂的国产精品| 黑人一区二区| 欧美华人在线视频| 亚洲一二三区视频在线观看| 麻豆av一区二区三区久久| 亚洲视频一区在线| 精品动漫av| 国产精品日韩二区| 欧美国产日韩精品| 久久精品2019中文字幕| 亚洲伦伦在线| 欧美国产在线视频| 久久www免费人成看片高清| 亚洲免费av观看| 狠狠久久亚洲欧美专区| 国产精品国产三级国产普通话蜜臀| 久久一综合视频| 午夜精品久久久久| 日韩一级片网址| 欧美国产精品v| 久久久蜜桃精品| 欧美一区二区三区播放老司机| 99亚洲一区二区| 亚洲欧洲精品一区二区三区波多野1战4| 国产精品久久久久三级| 欧美日韩在线一区二区| 欧美成人有码|