为什么插入后红黑树保持不平衡?

索拉·巴诺(Saurabh Banore)

是一棵似乎不平衡的红黑树。如果是这样,请有人解释为什么它不平衡?

马特·蒂默曼斯

术语“平衡”有点含糊,因为不同种类的平衡树具有不同的约束。

红黑树可确保通往叶子的每条路径都具有相同数量的黑节点,并且至少与红节点一样多。结果是最长的路径最多是最短的路径的两倍,这足以保证O(log N)时间用于搜索,插入和删除操作。

大多数其他种类的平衡树具有更严格的平衡约束。例如,一棵AVL树可确保每个节点两侧的最长路径的长度最多相差1。这超出了您的需要,并且存在成本-在AVL树中插入或删除(找到后目标节点)平均执行O(log N)次操作,而在红黑树中插入或删除则平均执行O(1)次操作。

如果要保持一棵树完全平衡,以便每个节点的每一侧都有相同数量的子孙,+ /-1,那将非常昂贵-插入和删除操作将花费O(N)时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

红黑树平衡了吗

来自分类Dev

为什么二叉搜索树趋向于变得不平衡?

来自分类Dev

为什么要添加不平衡二叉搜索树O(n)?

来自分类Dev

为什么我的AVL树删除功能不平衡?

来自分类Dev

为什么在红黑树插入操作中新插入的节点总是被涂成红色?

来自分类Dev

为什么std :: map是红黑树而不是哈希表?

来自分类Dev

为什么std :: map是红黑树而不是哈希表?

来自分类Dev

VoltDB 为什么选择红黑树作为索引结构?

来自分类Dev

值的红黑树插入操作的行为

来自分类Dev

如何生成最大不平衡的AVL树

来自分类Dev

打印不平衡的二叉树

来自分类Dev

为什么使用降雪进行并行计算时不平衡负载?

来自分类Dev

插入功能无法旋转不平衡因数的节点

来自分类Dev

红黑树的直觉

来自分类Dev

红黑搜索树

来自分类Dev

为什么《 Clojure食谱》中的红黑树会错过重新着色的情况

来自分类Dev

为什么《 Clojure食谱》中的红黑树会错过重新着色的情况

来自分类Dev

如何在红黑树中插入升序数字

来自分类Dev

红黑树中插入的节点着色错误

来自分类Dev

红黑树与安德森树

来自分类Dev

KMeans的不平衡因子?

来自分类Dev

PInvoke使堆栈不平衡

来自分类Dev

如何使图像不平衡?

来自分类Dev

SVM硬边距:为什么数据集不平衡可能会导致不良结果?

来自分类Dev

有什么技术原因为什么std :: lower_bound不专门用于红黑树迭代器?

来自分类Dev

为什么红黑树总是将零个节点作为叶节点,这意味着什么?

来自分类Dev

如何平衡不平衡的面板数据?

来自分类Dev

红黑树:卡尔版本

来自分类Dev

红黑树高度证明