小编kor*_*hak的帖子

从自上而下的2-3-4左倾红黑树中删除需要什么额外的轮换?

我一直在实现一个LLRB软件包,它应该能够在Sedgewick描述的两种模式中的任何一种操作,Bottom-Up 2-3或Top-Down 2-3-4 (代码 - 改进代码,但只处理2- 这里有 3棵树,感谢RS指针).

Sedgewick为2-3模式提供了非常清晰的树操作描述,尽管他花了很多时间谈论2-3-4模式.他还展示了在插入过程中对颜色翻转顺序的简单改变如何改变树的行为(在向下分割2-3-4或在向上分割2-3分割时):

private Node insert(Node h, Key key, Value value)
{
    if (h == null)
        return new Node(key, value);

    // Include this for 2-3-4 trees
    if (isRed(h.left) && isRed(h.right)) colorFlip(h);

    int cmp = key.compareTo(h.key);

    if (cmp == 0)     h.val = value;
    else if (cmp < 0) h.left = insert(h.left, key, value);
    else              h.right = insert(h.right, key, value);

    if (isRed(h.right) && !isRed(h.left))    h = rotateLeft(h);
    if (isRed(h.left) && isRed(h.left.left)) h = …
Run Code Online (Sandbox Code Playgroud)

java algorithm red-black-tree data-structures 2-3-4-tree

48
推荐指数
1
解决办法
1914
查看次数

如何使用ggplot2限制stat_function图的范围?

我正在尝试使用以下代码创建一个图以显示不同的饱和度水平及其对通话采样动态的影响:

max <- 2
decay <- function(x, k, C) {
    C * (1 - exp(-k*x))
}
require("ggplot2")
ggplot(NULL, aes(x=x, colour = C)) +
    stat_function(data = data.frame(x = 0:max, C = factor(1)), fun = function(x) { decay(x, k=10, C=1e1) }) +
    stat_function(data = data.frame(x = 0:max, C = factor(2)), fun = function(x) { decay(x, k=10, C=1e2) }) +
    stat_function(data = data.frame(x = 0:max, C = factor(3)), fun = function(x) { decay(x, k=10, C=1e3) }) +
    stat_function(data = data.frame(x = 0:max, C …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

3
推荐指数
1
解决办法
1774
查看次数