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

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,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>
            日韩视频三区| 女同性一区二区三区人了人一 | 久久黄色小说| 亚洲欧美成人在线| 欧美一乱一性一交一视频| 亚洲无吗在线| 欧美专区18| 欧美成人中文字幕| 欧美激情第9页| 亚洲精一区二区三区| 一本不卡影院| 欧美伊人久久久久久久久影院 | 国产一区二区在线观看免费| 国产有码一区二区| 亚洲激情黄色| 午夜国产精品视频| 欧美jizzhd精品欧美巨大免费| 亚洲国产精品久久久久婷婷884| 玖玖玖国产精品| 亚洲精品一区二区在线| 亚洲欧美日韩国产一区二区| 久久深夜福利免费观看| 欧美亚洲动漫精品| 黄色成人91| 亚洲一区二区欧美日韩| 另类天堂av| 亚洲校园激情| 欧美激情一区二区三区蜜桃视频| 国产伦理一区| 中文网丁香综合网| 欧美成人四级电影| 亚洲欧美日韩视频一区| 欧美精品一区二区久久婷婷| 国产一区二区三区在线观看网站 | 午夜国产一区| 久久久久久色| 日韩午夜在线| 麻豆精品视频在线| 国产毛片精品视频| 99这里只有久久精品视频| 久久精品视频免费| 日韩午夜剧场| 欧美电影在线观看完整版| 国产一区二区在线观看免费| 亚洲一区二区三区三| 亚洲成人直播| 久久久久久一区二区| 国产精品影音先锋| 在线视频精品| 亚洲国产精品久久久久秋霞不卡| 久久久久一本一区二区青青蜜月| 国产精品你懂的在线欣赏| 亚洲性夜色噜噜噜7777| 欧美h视频在线| 久久国产一二区| 国产午夜亚洲精品羞羞网站| 亚洲一区二区三区在线观看视频 | 欧美日韩亚洲成人| 91久久久一线二线三线品牌| 快射av在线播放一区| 欧美一区二区三区日韩| 国产精品尤物| 亚欧美中日韩视频| 亚洲欧美成aⅴ人在线观看| 国产精品扒开腿做爽爽爽视频 | 最近看过的日韩成人| 美女网站久久| 91久久精品国产91久久性色| 亚洲第一精品夜夜躁人人躁| 蜜桃av一区二区| 日韩视频久久| 日韩亚洲国产精品| 国产精品美女久久久久aⅴ国产馆| 亚洲女女做受ⅹxx高潮| 亚洲一区视频在线| 国产一区二区三区四区五区美女 | 国产精品自拍一区| 久久国产精品一区二区三区| 久久九九99| 久久久久久免费| 欧美亚洲综合在线| 国产精品欧美久久| 久久久999精品| 免费在线看一区| 中文精品一区二区三区| 亚洲一区二三| 一色屋精品视频在线观看网站 | 亚洲小视频在线观看| 国产精品日本欧美一区二区三区| 久久久91精品| 欧美精品成人在线| 欧美一区二区精品在线| 久久亚洲不卡| 亚洲一区二区三区在线观看视频| 欧美在线播放| 一区二区三区.www| 久久成人av少妇免费| 日韩午夜在线观看视频| 午夜久久久久久| 亚洲乱码视频| 欧美诱惑福利视频| 亚洲性视频网址| 免费亚洲电影在线| 欧美aaaaaaaa牛牛影院| 亚洲一区二区在线免费观看视频| 欧美影院在线播放| 亚洲一区二区三区四区在线观看 | 玖玖精品视频| 午夜精品一区二区三区四区| 久久综合色8888| 亚洲欧美国产精品桃花| 久久婷婷激情| 欧美主播一区二区三区| 欧美日韩久久不卡| 欧美成人资源| 黄色成人免费观看| 亚洲永久精品大片| 99国产精品视频免费观看一公开| 久久国产精品免费一区| 亚洲欧美日韩精品久久久| 欧美国产精品va在线观看| 久久久久国产精品麻豆ai换脸| 欧美日韩一区在线视频| 亚洲国产精品第一区二区| 黄色亚洲在线| 欧美亚洲一区| 欧美一区在线直播| 国产精品视频一区二区高潮| 日韩视频在线观看| 一本大道av伊人久久综合| 欧美+日本+国产+在线a∨观看| 久久人人97超碰人人澡爱香蕉| 国产精品一级| 亚洲欧美变态国产另类| 午夜精品视频在线观看| 欧美视频在线一区| 日韩亚洲国产精品| 亚洲一区二区四区| 国产精品a久久久久| 一区二区三区 在线观看视频| 亚洲最新合集| 一区二区黄色| 欧美日韩精品是欧美日韩精品| 欧美风情在线| 亚洲精品乱码久久久久久久久| 麻豆免费精品视频| 欧美大片91| 亚洲裸体俱乐部裸体舞表演av| 欧美激情精品久久久六区热门 | 亚洲高清免费在线| 亚洲黄色片网站| 欧美韩国在线| 日韩午夜电影| 欧美在线关看| 精品av久久707| 欧美国产日韩一区二区三区| 亚洲精品视频在线| 欧美一区观看| 亚洲欧美卡通另类91av| 亚洲欧美日韩成人| 国产一区二区精品久久| 久久久久久久999精品视频| 欧美激情欧美激情在线五月| 亚洲人成网在线播放| 欧美午夜在线| 久久久久久久久岛国免费| 亚洲精品国产精品国自产在线| 亚洲综合国产| 在线看一区二区| 欧美另类在线观看| 欧美一区二区在线| 91久久国产综合久久91精品网站| 亚洲视频自拍偷拍| 极品日韩av| 国产精品chinese| 噜噜噜91成人网| 亚洲免费伊人电影在线观看av| 免费成人av在线| 亚洲制服丝袜在线| 亚洲韩国精品一区| 国产精品自拍三区| 欧美日韩国产美女| 久久久午夜电影| 亚洲一区日韩在线| 亚洲靠逼com| 欧美激情久久久| 久久久天天操| 亚洲欧美日韩一区二区在线| 亚洲欧洲久久| 激情欧美一区二区| 国产精品一区二区三区四区五区| 欧美大片国产精品| 久久免费观看视频| 香蕉久久精品日日躁夜夜躁| 亚洲久色影视| 亚洲精品在线观| 亚洲国产激情| 欧美大香线蕉线伊人久久国产精品| 欧美亚洲视频| 亚洲欧美日韩国产一区二区|