红黑树与普通的平衡二叉树除了颜色到底有啥区别为啥要引入红黑树,它比普通的平衡二叉树究竟好在哪( 二 )
为什么要有红黑树?
大多数二叉排序树BST的操作(查找、最大值、最小值、插入、删除等等)都是
的时间复杂度,h 为树的高度。但是对于斜树而言(BST极端情况下出现),BST的这些操作的时间复杂度将达到 ?
。为了保证BST的所有操作的时间复杂度的上限为 ?
,就要想办法把一颗BST树的高度一直维持在
,而红黑树就做到了这一点,红黑树的高度始终都维持在
,n 为树中的顶点数目。
【红黑树与普通的平衡二叉树除了颜色到底有啥区别为啥要引入红黑树,它比普通的平衡二叉树究竟好在哪】
红黑树RBT与平衡二叉树AVL比较:
AVL 树比红黑树更加平衡,但AVL树在插入和删除的时候也会存在大量的旋转操作。所以当你的应用涉及到频繁的插入和删除操作,切记放弃AVL树,选择性能更好的红黑树;当然,如果你的应用中涉及的插入和删除操作并不频繁,而是查找操作相对更频繁,那么就优先选择 AVL 树进行实现。
一颗红黑树是如何保持平衡的?
下面举一个简单但是很经典的例子,包含3个结点的单链是不可能出现在红黑树当中的。 关于这一点,我们可以自己绘制一条单链,然后尝试为其着色,然后判断是否是一颗红黑树证明这一点。
从上图中可以发现,将根结点 9 涂黑色,其他结点分四种情况着色,结果都不满足红黑树的性质要求。唯一的办法就是调整树的高度,下面提供两种可行的设计方案:
上面的这个例子算是对红黑树维持平衡的初探,接着再看两个重要的概念:
什么是一颗红黑树的黑高(Black Height)?
在一颗红黑树中,从某个结点 x 出发(不包含该结点)到达一个叶结点的任意一条简单路径上包含的黑色结点的数目称为 黑高 ,记为 bh(x) 。
计算结点 6 的黑高,从结点 6 到结点 c 的路径是 6→15→10→9→c ,其中黑色结点为 6、10、c ,但是在计算黑高时,并不包含结点本身,所以从结点 6 到结点 c 的路径上的黑色结点个数为 2 ,那么 bh(6)=2 ;从结点 15 到结点 c 的路径为 15→10→9→c ,其中黑色结点为 10、c ,所以从结点 15 到结点 c 的路径上黑色结点数目为 2 ,bh(15)=2 。
推荐阅读
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 长春评选“网络奋斗者”:互联网成更多普通人创业工具
- 普通车|德系商务风对阵美式运动范 迈腾 VS 迈锐宝XL
- 普通车|途观L之后,大众又一款“销量王”,配2.0T动力,10月卖出18885台
- 普通车|选商务还是要运动? 迈腾 VS 君威
- 普通车|别克也有“明星”SUV,2.0T+9AT,配全景天窗,还很厚道
- 当下电脑城/电子城/数码城的业务日益萧条,作为普通的创业者该怎样转变思路从而突围
- 不是刺儿头,是普通人守护普通权利
- 普通车|更显轻奢质感,全新速派上市,这价位还买啥丰田本田