File tree Expand file tree Collapse file tree 1 file changed +15
-22
lines changed Expand file tree Collapse file tree 1 file changed +15
-22
lines changed Original file line number Diff line number Diff line change @@ -240,27 +240,20 @@ namespace alg {
240
240
WRITE (x);
241
241
return ;
242
242
} else { // in non-leaf node
243
- node y, z;
244
- if (i-1 >= 0 ) { // case 2a
245
- y = READ (x, i-1 );
246
- std::auto_ptr<node_t > _y (y);
247
- if (y->n >= T) {
248
- x->key [i] = y->key [y->n -1 ];
249
- WRITE (x);
250
- delete_op (y, x->key [i]);
251
- return ;
252
- }
243
+ std::auto_ptr<node_t > y (READ (x, i));
244
+ if (y->n >= T) { // case 2a.
245
+ x->key [i] = y->key [y->n -1 ];
246
+ WRITE (x);
247
+ delete_op (y.get (), x->key [i]);
248
+ return ;
253
249
}
254
250
255
- if (i+1 < x->n ) { // case 2b
256
- z = READ (x, i+1 );
257
- std::auto_ptr<node_t > _z (z);
258
- if (z->n >= T) {
259
- x->key [i] = z->key [0 ];
260
- WRITE (x);
261
- delete_op (z, x->key [i]);
262
- return ;
263
- }
251
+ std::auto_ptr<node_t > z (READ (x, i+1 ));
252
+ if (z->n >= T) { // case 2b.
253
+ x->key [i] = z->key [0 ];
254
+ WRITE (x);
255
+ delete_op (z.get (), x->key [i]);
256
+ return ;
264
257
}
265
258
266
259
if (y->n == T-1 && z->n == T-1 ) { // case 2c
@@ -277,8 +270,8 @@ namespace alg {
277
270
// mark free this node
278
271
z->flag |= MARKFREE;
279
272
y->n = y->n + z->n + 1 ; // size after merge
280
- WRITE (z);
281
- WRITE (y);
273
+ WRITE (z. get () );
274
+ WRITE (y. get () );
282
275
283
276
// shift x
284
277
for (j=i;j<x->n -1 ;j++) {
@@ -288,7 +281,7 @@ namespace alg {
288
281
WRITE (x);
289
282
290
283
// recursive delete k
291
- delete_op (y, k);
284
+ delete_op (y. get () , k);
292
285
return ;
293
286
}
294
287
You can’t perform that action at this time.
0 commit comments