深蓝加点是什么小说说

俺是非科班出身所以理解红黑樹用了好久,下面说说自己的理解如果有什么错误的地方(肯定是有的。。)轻喷。
首先我们知道查询最好的数据结构是平衡二叉树,但是对于平衡二叉树(所有节点的左右子树高度差不超过1)不管我们是执行插入还是删除操作,只要不满足上面的条件就要通过旋轉来保持平衡,而旋转非常耗时的
所以我们旋转一种不追求那么平衡的二叉树(红黑树),用相同数量的黑球间插入红球来控制各路径的相對长度不会差出一倍
总之,红黑树就是平衡二叉树的低配版本(任何节点左腿右腿不会差一倍)

  1. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的; 这里
  2. 如图所示,如果一个节点是红的那么它的两儿子都是黑的;(黑色节点可以连续!但是数量差距需要用红色的来丑)
  3. 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;(不然只能旋转替换连接)
  4. 每条路径都包含相同的黑节点; 弱平衡关键

通過对任何一条从根到叶子的路径上各个节点着色的方式的限制红黑树确保没有一条路径会比其它路径长出两倍(因为总数量等于红+黑,黑數量是一致的红的比黑的少),因此红黑树是一种弱平衡二叉树(由于是弱平衡,可以看到在相同的节点情况下,AVL树的高度低于红黑樹)相对于要求严格的AVL树来说,它的旋转次数少所以对于搜索,插入删除操作较多的情况下,我们就用红黑树

二叉树旋转(用来调節左右高度)

新插入节点是红色节点,所以如果父节点是黑的就直接插入了(注意这里是不管空的叶子节点的叶子节点相当于添头),不用管別的树高

我要回帖

更多关于 不用网络的小说 的文章

 

随机推荐