File tree 1 file changed +4
-5
lines changed 1 file changed +4
-5
lines changed Original file line number Diff line number Diff line change @@ -112,19 +112,18 @@ namespace alg
112
112
void delete_key (dostree_node n)
113
113
{
114
114
rbtree_node child;
115
-
116
- // phase 1. fix up size
117
- fixup_size (n);
118
115
119
- // phase 2. handle red-black properties, and deletion work.
116
+ /* Copy key/value from predecessor and then delete it instead */
120
117
if (n->left != NULL && n->right != NULL ) {
121
- /* Copy key/value from predecessor and then delete it instead */
122
118
dostree_node pred = DOSNODE (maximum_node (n->left ));
123
119
DOSNODE (n)->key = DOSNODE (pred)->key ;
124
120
DOSNODE (n)->size = DOSNODE (pred)->size ;
125
121
n = pred;
126
122
}
127
123
124
+ // fix up size from pred
125
+ fixup_size (n);
126
+
128
127
assert (n->left == NULL || n->right == NULL );
129
128
child = n->right == NULL ? n->left : n->right ;
130
129
if (node_color (n) == BLACK) {
You can’t perform that action at this time.
0 commit comments