数据结构之红黑树和2-3树
数据结构之红黑树和2-3树
一、红黑树
1、性质
(1)每个节点或者是红色的,或者是黑色的
(2)根节点是黑色的
(3)每一个叶子节点(最后的空节点)是黑色的
(4)如果一个节点是红色的,那么它的孩子节点都是黑色的
(5)从任意一个节点到叶子节点,经过的黑色节点是一样的
(6)对于红黑树,任何不平衡都会在三次旋转内解决
2、性能总结
(1)对于完全随机的数据,普通的二分搜索树很好用,缺点是极端情况会退化为链表或者高度不平衡
(2)查询较多时,AVL树很好用,红黑树牺牲了平衡性(2logn的高度)
(3)红黑树的统计性能更优(综合增删改查所有的操作)
3、颜色翻转和右旋转
(1)红色节点意味着和父节点融合在一起,分裂后变成黑色
(2)父类变成红色,子类变成黑色,颜色翻转
(3)右旋转:顺时针旋转
二、2-3树
1、简介
(1)满足二分搜索树的基本性质,但不是二叉树,节点可以存放一个元素或者2个元素
(2)2个元素左侧、中间、右侧,表示小于、中间、大于
(3)每个节点有2个或者3个孩子----2-3树
(4)2-3树是一颗绝对平衡的树,根节点到任何一个叶子节点的节点数相同
2、2-3树如何维持绝对平衡
(1)节点融合,不会去空位置,融合,然后分裂,重新生成树结构
(2)叶子节点融合2节点,可以;叶子融合3节点,会形成临时4节点而分裂
三、拓展
1、红黑树和2-3树等价
2、红黑树是保持黑平衡的二叉树,严格意义上,不是平衡二叉树,最大高度2logn
3、另一种统计性能优秀的树结构:Splay Tree(伸展树),局部性原理刚被访问的内容下次高概率被再次访问