红黑树变换规则
遍历->二分法->二叉树->二叉查找树->红黑树(自平衡的二叉查找树)->二叉平衡树(理想状态)
红黑树性质
- 每一个结点不是红色就是黑色
- 红色结点不能够连接在一起
- 根节点必须为黑色
- 叶子结点均为黑色
注意最后一个是NULL,所以表面上叶子结点为红色,但其实是没有问题的
红黑树的变换规则
所有插入的点默认都是红色,否则全黑色就是普通二叉树了,下一步也就无法按照规律变换以达到自平衡。
- 变色规则
当前结点是红色,父结点是红色,且它的叔叔结点也是红色(自红,父红,叔叔红)- 把父结点设为黑色
- 把叔叔结点设为黑色
- 把祖父结点设为红色
- 把指针结点定义到祖父结点设为当前要操作的,分析的点变换的规则(此时可能是要左右旋)
- 左旋
- 当前结点是右子树,且是红色
- 父结点是红色
- 叔叔结点是黑色(右红,父红,叔叔黑)
以父结点左旋
- 右旋
当前节结点是左子树,红色,父结点红色,叔叔黑色。(左红,父红,叔叔黑)
- 把父结点变为黑色
- 把祖父变为红色
- 以祖父为结点右旋
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步