libctru/libctru/source/util/rbtree/rbtree_find.c
2016-12-04 17:21:44 +00:00

31 lines
502 B
C

#include <3ds/util/rbtree.h>
#include "rbtree_internal.h"
rbtree_node_t*
rbtree_find(const rbtree_t *tree,
const rbtree_node_t *node)
{
rbtree_node_t *tmp = tree->root;
rbtree_node_t *save = NULL;
while(tmp != NULL)
{
int rc = (*tree->comparator)(node, tmp);
if(rc < 0)
{
tmp = tmp->child[LEFT];
}
else if(rc > 0)
{
tmp = tmp->child[RIGHT];
}
else
{
save = tmp;
tmp = tmp->child[LEFT];
}
}
return save;
}