My Project
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
rbtree_find.c
Go to the documentation of this file.
1 #include <3ds/util/rbtree.h>
2 #include "rbtree_internal.h"
3 
5 rbtree_find(const rbtree_t *tree,
6  const rbtree_node_t *node)
7 {
8  rbtree_node_t *tmp = tree->root;
9  rbtree_node_t *save = NULL;
10 
11  while(tmp != NULL)
12  {
13  int rc = (*tree->comparator)(node, tmp);
14  if(rc < 0)
15  {
16  tmp = tmp->child[LEFT];
17  }
18  else if(rc > 0)
19  {
20  tmp = tmp->child[RIGHT];
21  }
22  else
23  {
24  save = tmp;
25  tmp = tmp->child[LEFT];
26  }
27  }
28 
29  return save;
30 }
rbtree_node_t * node
Definition: rbtree.h:45
#define RIGHT
Definition: rbtree.h:21
rbtree_node_t * rbtree_find(const rbtree_t *tree, const rbtree_node_t *node)
Definition: rbtree_find.c:5
#define LEFT
rbtree_node_t * root
Definition: rbtree.h:23
rbtree_node_comparator_t comparator
Definition: rbtree.h:24
rbtree_node_t * child[2]
Definition: rbtree.h:18