红黑树

红黑树
红黑树

一 基本特性
1 节点非红即黑
2 根节点必是黑色节点
3 红色节点的子节点不能是红色节点
4 每个节点到子叶节点的所有路径,拥有相同数量的黑色节点。
二 插入操作
插入节点颜色默认为红色。
插入分5种情况
1 空树:直接插入,然后将节点颜色涂黑。
2 父节点为黑色,直接插入
3父节点颜色为红色,叔叔节点为黑色,且父节点是爷节点(即父节点的父节点)的左子,此时又分两种情况
(1)插入的节点时父节点的左子:对爷节点进行右旋操作,互换爷节点和父节点的颜色。
(2)插入的节点时父节点的右子:对父节点进行左旋操作,此时情况同(1)相同,进行(1)操作
4父节点颜色为红色,叔叔节点为黑色,且父节点是爷节点(即父节点的父节点)的右子,情况为3的镜像。
5父节的为红色,叔节点为红色,将叔父变黑,爷爷变红,向上递归变色,直到父节点为黑
三删除操作
首先进行一半的二叉树删除操作。其最终操作为删除至多有一个子节点的节点的操作。注()中的内容表示另外一种情况。S为删除节点的兄弟节点。
此时分为两种情况
1 要删除的节点为红色节点,直接删除,不影响红黑树的平衡。
2 要删除的节点为黑色节点,此时又分两种情况
(1)子节点为红色 ,删除节点,将子节点染黑。
(2)没有子节点,删除节点,用NULL替代,此时又分6中情况
1)该节点为根节点,结束,否则进行情况2)判断
2)S为红右(左)子,对P进行左(右)旋,对调P S的颜色(即调整为S为黑的情况),进行3)判断
3)S为黑,SL,SR,P均为黑色,将S变红,从新开始对P进行平衡处理,否则进行4)
4)S为黑色,SL,SR为黑,P为红,交换S与P的颜色,此时红黑树平衡。否则进行5)
5)S为黑色,SL为红(黑),SR为黑(红),S为右子(左子),对S右(左)旋,交换S与SL的颜色,进行6)。
6)S为黑,SR为红,N为P的左(右)子,对P左(右)旋,调换P与S的颜色,将SR染黑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值