日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

红黑树的删除_红黑树

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 红黑树的删除_红黑树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

紅黑樹是許多“平衡的”查找樹中的一種,它能保證在最壞的情況下,基本的動態集合操作(插入和刪除)的時間為O(lgh)。我們先簡單敘述二叉查找樹的性質。

1.1 二叉查找樹

二叉查找樹性質:設x為二叉樹中的任一結點,那么對于x左子樹中的任一結點y都有key[y]≤key[x],x右子樹中的任一結點y都有key[x]≤key[y]。

設二叉樹高度為h,下面是各個操作的算法時間復雜度:

靜態操作:查找結點、找前驅、后繼等時間為O(h)

動態操作:插入和刪除結點等時間為O(h)

對于插入操作,新結點總是插入在某個葉結點位置;對于刪除操作需依被刪結點z的情況而定:

①z無左右孩子

②z只有一個孩子

③z的左右孩子均存在

1.2 紅黑樹

1.2.1紅黑樹的特性

紅黑樹首先是一棵二叉查找樹,所以二叉查找樹的所有性質紅黑樹都具有,此外還有自身五個性質:

①每個結點要么是黑色要么是紅色

②樹根結點的顏色為黑色

③葉結點(nil)為黑色

④如果某個結點為紅色,則它的左、右孩子結點均為黑色

⑤對樹中任一結點,所有從該結點出發到其葉結點的路徑中均包含相同數目的黑色結點

外部結點(external node,葉節點):不包含實際關鍵字

內部結點(internal node):包含實際關鍵字

分別代表:雙親,保存的值,左孩子,右孩子,顏色。

黑高度(Black height):黑高度bh(x)表示從x結點出發(不包含x結點)到其葉結點路徑上的黑色結點個數。

Thearem1:具有n個內部結點的紅黑樹高度最多為2lg(n+1)。

proof:設紅黑樹的高度為h,即要證明h≤2lg(n+1)。

一個簡單的數學歸納法,直接把老師的屁屁踢圖片放上了。

由該定理大致猜到,動態集合操作的插入和刪除都可以在O(lgn)時間內完成。

1.2.2 紅黑樹的調整操作

旋轉(rotate)分為兩種:左旋和右旋操作。

左旋的偽碼。

一個實際操作:

1.2.3 紅黑樹的插入操作

插入一個新結點分為二步完成:

1. 按照二叉查找樹的方式插入新結點z

2. 恢復紅黑樹的特性

首先檢查紅黑樹5個特性可能遭受破壞的情況,然后針對遭受破壞的特性制定具體恢復的策略。(這里是將插入點置為紅色會產生下列情況,若置插入點為黑色,則性質⑤容易被破壞,所以我們置插入點為紅色,這樣就避免破壞性質⑤)

①每個結點要么是黑色要么是紅色(未被破壞)

②樹根結點的顏色為黑色(有可能被破壞,但修復很簡單)

③葉結點(nil)為黑色(未被破壞)

④如果某個結點為紅色,則它的左、右孩子結點均為黑色(有可能被破壞)

⑤對樹中任一結點,所有從該結點出發到其葉結點的路徑中均包含相同數目的黑色結點(未被破壞)

因此我們需要修復的只可能是第②和④條性質。偽碼如下。

else same as那里是指鏡像的情況,所有的left和right都鏡像變成right和left。

該算法在每次迭代的開頭保持下列三個部分的不變式:

①節點z是紅色的

②如果z.p是根節點,則z.p是黑節點

③若有任何紅黑樹的性質被破壞,則至多只有一條性質被破壞,或者是性質2,或者是性質4。(事實上,性質2被破壞,是由于z是根節點且是紅節點。如果性質4被破壞,其原因是z和z.p都是紅節點。)

下面用一個例子實際操作一下這段代碼,簡單順一下這個過程。

以一個實際例子來說明如何從頭開始生成一棵紅黑樹。首先是一份小總結。

1.2.4 紅黑樹的刪除

這東西是真的繁瑣,不寫了,有需要再看。還有紅黑樹的應用什么的,假期再補上吧。

下面是一篇寫的很好的文章。

程序員吳師兄:我畫了 20 張圖,給女朋友講清楚紅黑樹?zhuanlan.zhihu.com

忘掉了,還有個需要注意的地方,寫在最后。

這個圖b)里注意看根節點,它有一個父節點,是個空的黑節點。

——————————————————————————————————————

下午寫流,然后晚做周一要講的數據挖掘競賽的PPT。期末復習真的好煩啊,沒時間做自己想學的東西。

總結

以上是生活随笔為你收集整理的红黑树的删除_红黑树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。