My Project
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
rbtree_minmax.c
Go to the documentation of this file.
1 #include <3ds/util/rbtree.h>
2 #include "rbtree_internal.h"
3 
4 static inline rbtree_node_t*
5 do_minmax(const rbtree_t *tree,
6  int max)
7 {
8  rbtree_node_t *node = tree->root;
9 
10  if(node == NULL)
11  return NULL;
12 
13  while(node->child[max] != NULL)
14  node = node->child[max];
15 
16  return node;
17 }
18 
20 rbtree_min(const rbtree_t *tree)
21 {
23 
24  node = do_minmax(tree, LEFT);
25 
26  return node;
27 }
28 
30 rbtree_max(const rbtree_t *tree)
31 {
33 
34  node = do_minmax(tree, RIGHT);
35 
36  return node;
37 }
rbtree_node_t * node
Definition: rbtree.h:45
#define RIGHT
rbtree_node_t * rbtree_max(const rbtree_t *tree)
Definition: rbtree_minmax.c:30
rbtree_node_t * rbtree_min(const rbtree_t *tree)
Definition: rbtree_minmax.c:20
Definition: rbtree.h:21
#define LEFT
rbtree_node_t * root
Definition: rbtree.h:23
rbtree_node_t * child[2]
Definition: rbtree.h:18