目录
①:向2-3树的2节点添加元素(分为插入的元素是左孩子还是右孩子)
②:向2-3树中的3节点添加元素(也分为插入左孩子和右孩子)
一、为什么要学习红黑树?
首先,我们知道二分搜索树存在缺陷,就是如果插入的元素是顺序的则二分搜索树就变成和链表一样了,这样就会带来性能问题。
为了改变上图中的情况,就出现了AVL平衡二叉树,在平衡二叉树中规定了一个节点的左右孩子高度之差不能超过1,如果当插入或者删除了节点导致左右孩子高度差超过了1,就需要进行左旋或者右旋操作进行调整,总之平衡二叉树的性值保证了树中的节点不会出现上图,这样也就保证了其查询的时间复杂度为logn。
那么平衡二叉树在我们看来已经很优秀了,为什么还会有红黑树这种树结构出现呢?这是由于尽管AVL平衡树的查询效率非常高,但是有利就有弊,AVL树为了维持绝对的平衡(左右孩子高度差不超过1),就要符出更多的代价,每次插入、删除都可能需要进行调整以保证平衡,所以这就降低了插入、删除操作的性能,对于频繁的插入、删除的数据集合,如果使用AVL树代价就有点高了。
这时红黑树就出现了,红黑树仅仅是做到了近似平衡,没有达到严格意义上左右孩子高度差不能大于1,所以