基本结构:
> 每个节点或者是黑色,或者是红色;
> 根节点必须是黑色; > 每个叶子节点是黑色﹔ Java实现的红黑树将使用null 来代表空节点,因此遍历红黑树时将看不到黑色的叶子节点,反而看到每个叶子节点都是红色的; > 如果一个节点是红色的,则它的子节点必须是黑色的:(红节点不能连接红节点,但是黑节点可以连接黑节点) 从每个根到节点的路径上不会有两个连续的红色节点,但黑色节点是可以连续的。若给定黑色节点的个数N,最短路径情况是连续的N个黑色,树的高度为N-1;最长路径的情况为节点红黑相间,树的高度为2(N-1);
> 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点数量: 成为红黑树最主要的条件,后序的插入、删除操作都是为了遵守这个规定;
红黑树是方便进行左旋或右旋操作:
左旋或右旋操作可以将特殊的结构转换为平衡二叉树结构。
所有新增的节点都是红色节点。
数据插入处理 > 第一次插入,由于原树为空,所以只会违反红-黑树的规则2(根节点为黑色),所以只要把根节点涂黑即可; > 如果插入节点的父节点是黑色的,那不会违背红-黑树的规则,什么也不需要做;
> 但是遇到如下三种情况时,就要开始变色和旋转了∶ > 插入节点的父节点和其叔叔节点(祖父节点的另一个节点)均为红色的; > 插入节点的父节点是红色,叔叔节点是黑色,且插入节点是其父节点的左子节点;
> 插入节点的父节点是红色,叔叔节点是黑色,且插入节点是其父节点的右子节点;
较为复杂,需要长时间的理解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)