二叉搜索树
右节点都大于父节点,左节点都小于父节点
最佳时间复杂度O(log n),树的深度是2的n次方
缺点:连续数值容易变成链表
自平衡二叉树
是二叉搜索树的一种
有规则:左右深度相差小于等于1
解决了二叉搜索树的缺点,最差也是O(log n)
但是 自旋耗时
红黑树
是平衡二叉树的一种,不过没有那么严格,红黑树有自己遵循的平衡规则。
红黑树深度最多相差一倍 (红黑树要实现的目标)
规则:
根节点是黑节点
叶子节点(null节点)是黑节点(一半)
红节点的子节点是黑节点(不能两个连续的节点是红节点)
新插入的节点是红节点(但是会有平衡过程的变化)
从任意一个节点出发到子节点的所有路径黑节点数量相同
如果去除红节点就是自平衡二叉树
假设有n个节点
红节点就是nr,黑节点就是nb
n=nr+nb
把红节点去掉就是一个自平衡二叉树。时间复杂度就是O(log nb)。然后把红节点加上,最复杂就是红黑交替 时间复杂度为O(2log nb)nb最差等于n。
常量可以去除,所以时间复杂度就是O(log n)。
红黑树的时间复杂度在不变的情况下简化了插入。所以要优于平衡二叉树。
红黑树的插入规则总结
X
hashmap中为什么在数量大于8时候变成红黑树而不是自平衡二叉树或二叉搜索树?