红黑树实现原理
前言
红黑树是一种非常复杂的数据结构,一般大厂通常都会问相关的问题,但是不会让你手写红黑树的插入删除代码
一、红黑树是什么?
红黑树是一种平衡二叉树
1.红黑树的性质
1、包含二叉搜索树的基本规则
2、结点是黑色或者红色
3、根节点是黑色
4、每个叶子结点都是黑色的空结点
5、每个红色结点的两个子节点都是黑色的(就是说不存在连续挨着的两个红色结点)
6、从任意结点到它的叶子结点都包含相同数量的黑色结点
2.红黑树的相对平衡
3.红黑树变换的规则
1、变色(就是修改颜色,变成红色或者黑色)
2、右旋转 :左子树(left)往根节点旋转,根节点变成左子树(left)的右子树,它(left)的右子树往右平移一位
3、左旋转 : 右子树(right)往根节点旋转,根节点变成右子树(right)的左子树,它(right)的左子树往左平移一位
4.红黑树插入删除过程中的5种情况
插入的结点默认为红色
1、插入的位置是根节点(只需要变色)
2、插入的位置的父节点是黑色结点(直接就行)
3、插入结点的父节点是红色,叔叔结点是红色 —(爷爷结点变成红色,父节点和叔叔结点变成黑色)
4、父节点是红色,叔结点和爷爷结点都是黑色
5、