2022-08-04 11:40:24 +08:00

31 lines
504 B
C

#include "arm11/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;
}