Advertisement
Guest User

Untitled

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