@@ -27,6 +27,7 @@ void rotateRL(struct node *root);
27
27
28
28
void balanceCheck (struct node * root );
29
29
void bFactorInorder (struct node * root );
30
+ void correctParents (struct node * a ,struct node * b ,struct node * c ,struct node * f );
30
31
31
32
// Common Operations for BST structues
32
33
struct node * searchNode (struct node * root , int value ); // Return NULL if not found or Pointer to node if found
@@ -326,14 +327,8 @@ void rotateRL(struct node *root){
326
327
}
327
328
328
329
// Correct Parents
329
- if (a -> left != NULL ) a -> left -> parent = a ;
330
- if (a -> right != NULL ) a -> right -> parent = a ;
331
- if (b -> left != NULL ) b -> left -> parent = b ;
332
- if (b -> right != NULL ) b -> right -> parent = b ;
333
- if (c -> left != NULL ) c -> left -> parent = c ;
334
- if (c -> right != NULL ) c -> right -> parent = c ;
335
- if (f != NULL ) f -> left -> parent = f ;
336
- if (f != NULL ) f -> right -> parent = f ;
330
+ correctParents (a ,b ,c ,f );
331
+
337
332
}
338
333
339
334
void rotateRR (struct node * root ){
@@ -354,14 +349,7 @@ void rotateRR(struct node *root){
354
349
}
355
350
356
351
// Correct Parents
357
- if (a -> left != NULL ) a -> left -> parent = a ;
358
- if (a -> right != NULL ) a -> right -> parent = a ;
359
- if (b -> left != NULL ) b -> left -> parent = b ;
360
- if (b -> right != NULL ) b -> right -> parent = b ;
361
- if (c -> left != NULL ) c -> left -> parent = c ;
362
- if (c -> right != NULL ) c -> right -> parent = c ;
363
- if (f != NULL ) f -> left -> parent = f ;
364
- if (f != NULL ) f -> right -> parent = f ;
352
+ correctParents (a ,b ,c ,f );
365
353
}
366
354
367
355
void rotateLR (struct node * root ){
@@ -384,14 +372,7 @@ void rotateLR(struct node *root){
384
372
}
385
373
386
374
// Correct Parents
387
- if (a -> left != NULL ) a -> left -> parent = a ;
388
- if (a -> right != NULL ) a -> right -> parent = a ;
389
- if (b -> left != NULL ) b -> left -> parent = b ;
390
- if (b -> right != NULL ) b -> right -> parent = b ;
391
- if (c -> left != NULL ) c -> left -> parent = c ;
392
- if (c -> right != NULL ) c -> right -> parent = c ;
393
- if (f != NULL ) f -> left -> parent = f ;
394
- if (f != NULL ) f -> right -> parent = f ;
375
+ correctParents (a ,b ,c ,f );
395
376
}
396
377
397
378
void rotateLL (struct node * root ){
@@ -412,14 +393,17 @@ void rotateLL(struct node *root){
412
393
}
413
394
414
395
// Correct Parents
396
+ correctParents (a ,b ,c ,f );
397
+ }
398
+
399
+ void correctParents (struct node * a ,struct node * b ,struct node * c ,struct node * f ){
415
400
if (a -> left != NULL ) a -> left -> parent = a ;
416
401
if (a -> right != NULL ) a -> right -> parent = a ;
417
402
if (b -> left != NULL ) b -> left -> parent = b ;
418
403
if (b -> right != NULL ) b -> right -> parent = b ;
419
404
if (c -> left != NULL ) c -> left -> parent = c ;
420
405
if (c -> right != NULL ) c -> right -> parent = c ;
421
- if (f != NULL ) f -> left -> parent = f ;
422
- if (f != NULL ) f -> right -> parent = f ;
406
+ if (f != NULL ) f -> left -> parent = f ;
407
+ if (f != NULL ) f -> right -> parent = f ;
423
408
}
424
409
425
-
0 commit comments