8得票1回答
Java 8使用TreeNode代替LinkedList实现的HashMap

根据这篇文章: http://coding-geek.com/how-does-a-hashmap-work-in-java/ Java 8的哈希表使用TreeNode代替了Java 7中的LinkedList作为数组元素。如果元素数量较少,TreeNodes具有充当链表的特殊属性;如果元...

8得票2回答
红黑树插入:为什么在插入时将节点变为红色?

在红黑树中,属性并没有规定插入节点的颜色,但我们总是插入红色节点。 如果我们插入黑色节点,是否会违反任何属性(4个规则中的任何一个)?

8得票2回答
红黑树最坏情况下黑高度插入顺序问题

假设我们处理1-15的键。为了得到普通BST的最坏性能,您需要按以下方式按升序或降序插入键: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 然后BST基本上会变成链接列表。 对于BST的最佳情况,您将按以下顺序插入键,这些键被排列在一...

8得票2回答
红黑树旋转:当我有y = x.right; x.right = y.left时,写成y.left.p = x与x.right.p = x是否相同? 答案:是的,它们是等效的。

在CLRS中,作者通过以下伪代码介绍了红黑树中的旋转操作: LEFT-ROTATE(T, x) y = x.right # Line 1 x.right = y.left # Line 2 if y.left ≠ T.nil # Line 3 ...

7得票3回答
TreeMap<>操作的时间复杂度:get()和subMap()。

根据这篇文章,TreeMap操作的时间复杂度 - subMap,headMap,tailMap subMap()本身是O(1),而O(n)来自于迭代子映射。 那么,为什么要使用get(key)呢? 我们可以使用subMap(key,true,key,true)代替, 它是O(1),...

7得票2回答
红黑树是否平衡?

我正在学习红黑树,并阅读Cormen的《算法导论》。我正在尝试按照书中描述的伪代码(RB-INSERT-FIXUP(T, z))使用数字1-10创建红黑树。这是屏幕截图。 一切都很好,直到我将数字“6”插入到树中。根据伪代码,我得到以下结果: 如您所见,所有红黑树要求都满足了,但我...

7得票2回答
为什么红黑树总是将 nil 节点作为它们的叶子节点,并且这意味着什么?

我不知道为什么我们需要在红黑树中将NIL节点作为叶子节点。能否有人解释它的目的?

7得票2回答
如何用Go语言实现红黑树的惯用方法?

我刚开始学习Go语言,并实现了一棵二叉搜索树。该树可以存储任何值(具体而言,是实现了interface{}接口的任何内容)。 我想在这个实现的基础上创建一个自平衡的红黑树。在面向对象的语言中,我会定义一个BinarySearchTree的子类,添加一个color数据成员,然后重写Insert...

7得票2回答
为什么Clojure Cookbook中的红黑树缺少重新着色情况

在玩弄 Clojure Cookbook 中的红黑树实现示例后,我注意到平衡函数不包含重新着色的情况(在大多数红黑树文献中为Case 1,也称插入节点的叔叔节点为红色的情况)。 (defn balance "Ensures the given subtree stays balanced...

7得票2回答
左倾红黑树中的删除操作

我正在学习左倾红黑树。 在论文中介绍的删除算法中,如果节点的键匹配并且该节点的右子树为NULL,则删除该节点。但是可能还有一个未考虑的左子树。 我无法理解为什么左子树也会为空。当删除最小值或最大值时也会做类似的事情。请问有人能指导我吗?