红黑树
特点:
- 所有的节点颜色都是非黑即红
- 根节点一定会是黑色
- 红节点的子节点一定是黑节点,黑节点的子节点可以是红的也可以是黑的
- 最底层的叶子节点一定是黑色的
- 根节点到任意一个子节点经过的黑色节点的个数一定相同,即黑色节点高度一定是一样的
- 新添加的节点颜色一定是红节点
修正:
- 涂色:当前节点为红父节点,并且叔父节点也是红色,需要将父节点以及叔父节点涂黑,然后将祖父节点涂红
- 左旋:当前节点为红父节点,叔父为黑色,并且当前节点为右子叶,那么需要以当前节点为轴进行左旋
3.右旋:当前节点为红父节点,叔父节点是黑色,并且当前节点为左子叶,那么就需要以父节点为轴进行右旋
注意:在jdk1.8中引入红黑树,当桶中的元素个数>8,会扭转成一棵红黑树,但是<7,会扭转成链表---如果扭转成红黑树桶的最大容量64