红黑树是一种近似平衡的二叉搜索树,它能够保证任何一个节点的左右子树的高度差小于两倍(高的树的高度最大是矮的树的高度两倍)。
红黑树是满足以下条件的二叉搜索树:
- 每个节点要么是红色,要么是黑色;
- 根节点是黑色的;
- 每个叶节点(空节点)是黑色的;
- 不能有相邻的两个红色节点;
- 从任意一节点到其每个叶子的所有路径都包含相同数目的黑色节点;
红黑树示意图1:
红黑树示意图2:
关键性质:从根节点到叶子节点的最长的可能路径不多于最短的可能路径的两倍长。
红黑树与AVL的比较:
- AVL树拥有更快的查找速度,因为AVL树执行了严格的平衡策略;
- 红黑树拥有更快的删除和插入操作,因为AVL树执行了更多次数的旋转操作,相比之下红黑树执行的较少;
- 红黑树拥有更小的额外空间,因为红黑树仅仅保存一个是否是红节点即可,而AVL树需要保存平衡因子以及树高;
- 读多写少用AVL,其它红黑树;