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

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

關于紅黑二叉樹的理解

2019-11-08 20:59:15
字體:
來源:轉載
供稿:網友

最近看了些關于紅黑二叉樹的博客,有一些自己的見解。

紅黑二叉樹是一種特殊的平衡二叉樹,擁有平衡二叉樹的所有特征,這里就不再重復。

紅黑二叉樹的規則:

1、每個節點都必須有葉子節點(葉子節點沒有任何數據);

2、根節點和葉子節點必須是黑色;

3,紅節點的父節點必須是黑色;

4、從根節點到任何葉子節點,他們的黑色節點的數目必須相同;

規則解釋:

每個節點,不管有沒有子節點,都必須有兩個葉子節點,如果有子節點,則替換掉相應的葉子節點。

2/3/4點:由于任何分支到根節點的黑色節點數目必須相同,這就保證了各個分支之間長度相差<=1,這就是平衡二叉樹的要求。

如果有插入操作,那么為了保證分支黑色節點數目相同,插入的數據一定是紅節點,但是插入的節點的父節點卻不一定是黑色節點,這個問題下面討論。

紅黑二叉樹的操作:

左旋、右旋、重新著色。

左旋、右旋:當子二叉樹不平衡時,如果左邊的分支比右邊的長,就進行右旋。顧名思義,向右旋轉,具體操作是,讓子根節點a的左子節點b成為子根節點,然后b的右子節點成為a的左子節點,這樣就達到的右旋,左旋與右旋相似。

重新著色:左旋、右旋操作后要進行重新著色,從根節點開始著色,按照黑紅黑的順序著色,(如果存在末端節點一邊有子節點,一邊是葉子節點,則這個節點一定是黑色;如果所有末端節點都沒有子節點,則這一級節點全都是黑色,不需要遵循紅黑順序)著色完成后,計算各個分支的黑色節點數目,如果數目相同,則二叉樹平衡;否則對不平衡的子二叉樹進行左旋、右旋操作,直到二叉樹平衡。

增加:增加的節點一定是紅色,以保持黑色節點數目相同。增加節點的父節點如果紅色,代表這個子二叉樹不平衡,按需要左旋或右旋,操作完成后重新著色,計算黑色節點數目,如不平衡,再調整。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡西市| 简阳市| 黄龙县| 清原| 乌鲁木齐县| 汉川市| 化州市| 蓬莱市| 祁阳县| 新宾| 金昌市| 阿鲁科尔沁旗| 西宁市| 金寨县| 聂拉木县| 海宁市| 舞钢市| 隆化县| 禄丰县| 南安市| 布尔津县| 正安县| 合水县| 万安县| 铜山县| 高清| 博爱县| 石嘴山市| 磐石市| 衡东县| 布尔津县| 哈尔滨市| 湖口县| 东乡| 开阳县| 朝阳区| 辽阳市| 龙江县| 滨海县| 宁津县| 揭西县|