文章目录
- 前言
- 一、平衡二叉树
- 二、红黑树
- 区别
前言
数据库的底层用到了多种树结构,这里简单记录一下红黑树与平衡二叉树。
一、平衡二叉树
- 满足二叉树。
- 任何节点的两个子树的高度最大差为1。
- 如果对平衡二叉树进行删除和新增,那么会破坏平衡,就会出发旋转,最终达到平衡,也成自平衡二叉树。
下图是从1顺序插入到6,所形成的的平衡二叉树。
二、红黑树
红黑树也是自平衡(但没有高度差为1的限制,它有另外一套规则)
- 每个结点是红的或者黑的
- 根结点是黑的.
- 每个叶子结点是黑的 (NULL)
- 树中不存在两个相邻的红色结点 (即红色结点的父结点和孩子结点均不能是红色)。
- 从任意一个结点 (包括根结点) 到其任何后代 NULL 结点 (默认是黑色的) 的每条路径都具有相同数量的黑色结点。
下图是从1顺序插入到6,所形成的的红黑树。可以看到是不满足平衡二叉树的(两个子树的高度最大差不为1),但是满足红黑树。
区别
总的来说:
(1)红黑树放弃了平衡二叉树的完全平衡,追求大致平衡,在与平衡二叉树性能相差不大的情况下,保证每次插入或删除最多执行3次旋转就能达到平衡。
(2)而平衡二叉树追求绝对平衡,条件苛刻,每次插入或删除需要执行的旋转操作次数是未知的。
(3)红黑树查找比平衡二叉树稍差,因为平衡二叉树是高度平衡,但插入删除要比平衡二叉树好,因为旋转次数少。
(4)一般来说,红黑树有更好的效率和更高的统计性能。