mirror of
https://gitee.com/anod/open_agb_firm.git
synced 2025-05-07 06:14:12 +08:00
31 lines
504 B
C
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;
|
|
}
|