Algorithm 红黑树平衡吗

Algorithm 红黑树平衡吗,algorithm,tree,binary-tree,red-black-tree,Algorithm,Tree,Binary Tree,Red Black Tree,我正在研究红黑树,我正在读科曼的《算法导论》一书。现在,我正试图使用-RB-INSERT-FIXUP(T,z)一书中描述的伪代码创建数字为1-10的红黑树。这是截图 在我把数字“6”插入树之前,一切都很好。根据伪代码,我得到以下结果 正如你们所看到的,所有红黑树的要求都得到了满足,但我感到困惑,因为我知道红黑树应该在每一步上保持平衡 我可以用“2”和“4”手动执行“左旋转”程序并更改颜色。在这种情况下,我将得到以下结果,这是适当平衡的 所以我的问题是: 有不平衡的树可以吗?或者我在插入节点

我正在研究红黑树,我正在读科曼的《算法导论》一书。现在,我正试图使用-RB-INSERT-FIXUP(T,z)一书中描述的伪代码创建数字为1-10的红黑树。这是截图

在我把数字“6”插入树之前,一切都很好。根据伪代码,我得到以下结果

正如你们所看到的,所有红黑树的要求都得到了满足,但我感到困惑,因为我知道红黑树应该在每一步上保持平衡

我可以用“2”和“4”手动执行“左旋转”程序并更改颜色。在这种情况下,我将得到以下结果,这是适当平衡的

所以我的问题是:


有不平衡的树可以吗?或者我在插入节点时遗漏了什么?

这很好。红黑树是平衡的,但不一定完美。准确地说,红黑树的特性保证了到叶子的最长路径(隐式,未在图片中显示)最多是最短路径的两倍。最短的一个有长度2(2->1->leaf),最长的一个有长度4(2->4->5->6->leaf),因此不变量确实成立。

它们不平衡,因为它们不满足平衡树属性:

二叉树是平衡的,如果对于每个节点,左子树中的内部节点数和右子树中的内部节点数最多相差1


有些书称之为“近似平衡”,因为保证了对数时间的添加/删除/搜索操作。(平衡树是AVL树。)

我认为rb树在深度上可能会变得不平衡,达到2对数n。你应该检查一下这个。一棵完全平衡的树的深度大约是对数n。rb树中的不平衡性还不至于搞砸,它对于各种操作来说都是一个大O。谢谢你的回答。我刚才在想,如果可能的话,我们为什么不总是平衡树呢(就像我提到的那个例子)。然后我认为它会影响复杂性。是的,rb tres似乎在。。。平衡和速度:)还有其他平衡方案-例如,AVL树保证更平衡的树具有相同的复杂性,但常数更差。在实践中似乎不太常用。@MarcinŁoś你能看看我的RedBlackTree移除方法吗@AshotKhachatryan,你应该看看2-3-4棵树,一种高度完全平衡的树。2-3-4树和红黑树关系非常密切,但通常更容易表示2-3-4树的平衡不变量,也更容易实现红黑树的操作。