My Project
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
rbtree_rotate.c
Go to the documentation of this file.
1 #include <3ds/util/rbtree.h>
2 #include "rbtree_internal.h"
3 
4 void
7  int left)
8 {
9  rbtree_node_t *tmp = node->child[left];
10  rbtree_node_t *parent = get_parent(node);
11 
12  node->child[left] = tmp->child[!left];
13  if(tmp->child[!left] != NULL)
14  set_parent(tmp->child[!left], node);
15 
16  tmp->child[!left] = node;
17  set_parent(tmp, parent);
18  if(parent != NULL)
19  {
20  if(node == parent->child[!left])
21  parent->child[!left] = tmp;
22  else
23  parent->child[left] = tmp;
24  }
25  else
26  tree->root = tmp;
27  set_parent(node, tmp);
28 }
rbtree_node_t * node
Definition: rbtree.h:45
Definition: rbtree.h:21
void rbtree_rotate(rbtree_t *tree, rbtree_node_t *node, int left)
Definition: rbtree_rotate.c:5
rbtree_node_t * root
Definition: rbtree.h:23
rbtree_node_t * child[2]
Definition: rbtree.h:18