Assert node inserted into red-black tree exists
This commit is contained in:
parent
cd4207869f
commit
cb70994b0e
33
shape.c
33
shape.c
@ -229,25 +229,28 @@ redblack_insert_aux(redblack_node_t * tree, ID key, rb_shape_t * value)
|
|||||||
return redblack_new(RED, key, value, LEAF, LEAF);
|
return redblack_new(RED, key, value, LEAF, LEAF);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
redblack_node_t *left, *right;
|
||||||
if (key < tree->key) {
|
if (key < tree->key) {
|
||||||
return redblack_balance(redblack_color(tree),
|
left = redblack_insert_aux(redblack_left(tree), key, value);
|
||||||
tree->key,
|
RUBY_ASSERT(left != LEAF);
|
||||||
redblack_value(tree),
|
right = redblack_right(tree);
|
||||||
redblack_insert_aux(redblack_left(tree), key, value),
|
}
|
||||||
redblack_right(tree));
|
else if (key > tree->key) {
|
||||||
|
left = redblack_left(tree);
|
||||||
|
right = redblack_insert_aux(redblack_right(tree), key, value);
|
||||||
|
RUBY_ASSERT(right != LEAF);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (key > tree->key) {
|
return tree;
|
||||||
return redblack_balance(redblack_color(tree),
|
|
||||||
tree->key,
|
|
||||||
redblack_value(tree),
|
|
||||||
redblack_left(tree),
|
|
||||||
redblack_insert_aux(redblack_right(tree), key, value));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return tree;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return redblack_balance(
|
||||||
|
redblack_color(tree),
|
||||||
|
tree->key,
|
||||||
|
redblack_value(tree),
|
||||||
|
left,
|
||||||
|
right
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user