红黑树一次完整的插入数据过程-图解

上一篇文章,我们对红黑树的插入进行了java代码实现,参考:https://blog.csdn.net/dengjili/article/details/113204943

其中使用了测试数据4, 1, 2, 5, 0, 7, 9, 8, 3, 6

public class RBTreeTest {
	public static void main(String[] args) {
		int nums[] = { 4, 1, 2, 5, 0, 7, 9, 8, 3, 6};
		RBTree tree = new RBTree();
		for (int i : nums) {
			tree.put(i);
		}
		
		tree.print();
	}
}

层次遍历输出结果

value=5, color=BLACK
value=2, color=RED
value=8, color=RED
value=1, color=BLACK
value=4, color=BLACK
value=7, color=BLACK
value=9, color=BLACK
value=0, color=RED
value=3, color=RED
value=6, color=RED

那这里再使用图解插入过程,数据4, 1, 2, 5, 0, 7, 9, 8, 3, 6

红黑树一次完整的插入数据过程

  • 【1, 2, 5, 0, 7, 9, 8, 3, 6】-> 【4】,新增节点都是红色,但是为根节点,变黑

在这里插入图片描述

  • 【2, 5, 0, 7, 9, 8, 3, 6】-> 【4,1】
    在这里插入图片描述
  • 【5, 0, 7, 9, 8, 3, 6】-> 【4,1,2】

在这里插入图片描述
进行CASEA2+CASEA3调整
在这里插入图片描述

  • 【0, 7, 9, 8, 3, 6】-> 【4,1,2,5】
    在这里插入图片描述
    进行CASEB1调整,再对根节点变黑
    在这里插入图片描述
  • 【7, 9, 8, 3, 6】-> 【4,1,2,5,0】
    在这里插入图片描述
  • 【9, 8, 3, 6】-> 【4,1,2,5,0,7】

在这里插入图片描述
进行CASEB3调整
在这里插入图片描述

  • 【8, 3, 6】-> 【4,1,2,5,0,7,9】

在这里插入图片描述
进行CASEB1调整

在这里插入图片描述

  • 【3, 6】-> 【4,1,2,5,0,7,9,8】
    在这里插入图片描述
    进行CASEB2+CASEB3调整

在这里插入图片描述

  • 【6】-> 【4,1,2,5,0,7,9,8,3】
    在这里插入图片描述
  • 【】-> 【4,1,2,5,0,7,9,8,3,6】
    在这里插入图片描述
    进行CASEA1调整

在这里插入图片描述
此时8,5,2还需要调整,进行进行CASEB3调整

在这里插入图片描述
最终生成红黑树
在这里插入图片描述

核对层次遍历输出结果,一致

value=5, color=BLACK
value=2, color=RED
value=8, color=RED
value=1, color=BLACK
value=4, color=BLACK
value=7, color=BLACK
value=9, color=BLACK
value=0, color=RED
value=3, color=RED
value=6, color=RED
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值