算法自学笔记:平衡查找树(2)红黑查找树

本文详细介绍了红黑树的概念,它是2-3树的一种实现方式,通过左旋、右旋和变色等操作保持其特性。红黑树的搜索操作与普通二叉树相同,但插入操作较为复杂,涉及到对红链接的处理和节点颜色的调整。插入过程中可能遇到不同情况,如单节点、双节点插入,通过旋转和变色来维护树的平衡。理解红黑树的插入原理对于高效的数据结构使用至关重要。
摘要由CSDN通过智能技术生成

红黑查找树是2-3树概念的一个实现。把2-3树中的3节点以一个小的二分查找树实现。代表3节点的树左链接被标记为“红”链接。

红黑查找树性质:
没有一个节点有两条红链接(不存在4节点)
从根节点到树底黑节点数量一致
红节点始终在左边

红黑树搜索操作:
搜索操作忽视链接颜色,和普通二叉树搜索代码完全一致。同理,其他查找操作,如ceiling, selection, rank,均和二叉树代码一致

红黑树区别主要在插入操作。要实现插入首先需要实现三个基础操作:左旋,右旋和变色
左旋:如果红链接在右侧,要将其挪回到左侧

左旋示例代码:

private Node rotateLeft(Node h) {
	Node x = h.right;
	h.right = x.left;
	x.left = h;
	x.color = h.color;
	h.color = RED;
	x.count = h.count;
	h.count = 1 + size(h.left) + size(h.right)
	return x;
}

相反的,有些时候我们需要把左链接右旋。右旋代码和左旋几乎一致,只需要把left和right颠倒即可

左旋和右旋操作都维持树的对称性,并且都没有操作其他节点

变色:如果一个节点两个子节点链接均为红色,将两个链接变为黑色,并将父节点变为红色,该操作等同于2-3树里临时4节点的分裂

插入操作:
情况1:对单个节点插入
插入节点链接为红色,如小于原节点则插入到左边,如大于原节点插入到右边,然后左旋
在这里插入图片描述

情况2:对双节点插入
2.1插入节点链接为红色,如大于两个节点插入到右边,然后变色
在这里插入图片描述

2.2如小于两个节点插入到左边,然后对根节点右旋,转化为2.1的情况,进行变色
在这里插入图片描述

2.3 如在两个节点之间插入到原左节点的右节点,此时红边在原左节点右侧,左旋 ,转化为情况2.2,然后右旋,变色
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值