Newer
Older
uwuboot / source / arm11 / util / rbtree / rbtree_find.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;
}