Advertisement
Guest User

Node Code

a guest
Oct 26th, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.26 KB | None | 0 0
  1. node *treeinsert(tree *t, int *key, int *info)
  2. {
  3.         node *y, *x, *newnode;
  4.  
  5.         x = (node*)malloc(sizeof(node));
  6.         x->red = 1;
  7.         x->info = info;
  8.         x->key = key;
  9.  
  10.         bstinsert(t, x);
  11.  
  12.         newnode = x;
  13.  
  14.         while(x->parent->color == 1)
  15.         {
  16.                 if(x->parent == x->parent->parent->left)
  17.                 {
  18.                         y = x->parent->parent->right;
  19.                         if(y->color)
  20.                         {
  21.                                 x->parent->parent->color = 1;
  22.                                 y->color = 0;
  23.                                 x->parent->color = 0;
  24.                                 x = x->parent->parent;
  25.                         }
  26.                         else
  27.                         {
  28.                                 if(x == x->parent->right)
  29.                                 {
  30.                                         x = x->parent;
  31.                                         leftrotate(tree, x);
  32.                                 }
  33.  
  34.                                 x->parent->color = 0;
  35.                                 x->parent->parent->color = 1;
  36.  
  37.                                 rightrotate(tree, x->parent->parent);
  38.                         }
  39.                 }
  40.                 else
  41.                 {
  42.                         y = x->parent->parent->left;
  43.                         if(y->color)
  44.                         {
  45.                                 x->parent->parent->color = 1;
  46.                                 y->color = 0;
  47.                                 x->parent->color = 0;
  48.                                 x = x->parent->parent;
  49.                         }
  50.                         else
  51.                         {
  52.                                 if(x == x->parent->left)
  53.                                 {
  54.                                         x = x->parent;
  55.                                         rightrotate(tree, x);
  56.                                 }
  57.  
  58.                                 x->parent->color = 0;
  59.                                 x->parent->parent->color = 1;
  60.  
  61.                                 leftrotate(tree, x->parent->parent);
  62.                         }
  63.                 }
  64.         }
  65.  
  66.         t->root->left->red = 0;
  67.         return newnode;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement