阅读前提
假设你已经了解了何为树,何为二叉树,并且了解二叉排序树,懂得平衡二叉AVL树的定义,了解红黑树的定义和规则
废话不多说,看图说话
总结详情见图。
作图工具是这个processon:https://www.processon.com/i/5ad561f2e4b0f5fa24dcdc53
本文是学习他人的博客,完整学习,建议看原博客地址
- 数组是依照原作者创建的数组
- 但图是个人的理解所作
- 原博客地址: https://www.jianshu.com/p/3958a1a11cb0
抛出一个问题?有了平衡二叉树为何还需要红黑树?
这里就需要总结平衡二叉树和红黑树的比较了
平衡二叉树和红黑树的比较
- 平衡二叉树是高度平衡的二叉树,所有的结点的平衡因子的绝对值不大于1,因此需要频繁旋转
- 平衡二叉树和红黑树的插入均最多只需要旋转两次,即为O(1)
- 平衡二叉树由于高度平衡,且删除结点时具有失衡传播特性,因此在删除结点的失衡,需要将当前失去平衡的结点进行平衡,然后将结点向上传递,因此需要不断地向上平衡,最多平衡次数为当前删除结点深度H-2,旋转量级为O(logN);红黑树删除结点,则最多需要3次旋转即可平衡,时间复杂度为O(1)。
关于平衡二叉树的删除和红黑树的删除,均有迹可循,这里没有做详细作图分析,而是在个人手写相应的Java例子的时候进行分析,这里没有作展示。