[prev] 22 [next]

Trie Operations

Searching traverses path, using char-by-char from Key:

TrieNode *find(Trie t, Key k)
{
   char *c = k;
   TrieNode *curr = t->root;
   while (*c != '\0' && curr != NULL) {
      // scan siblings
      while (curr != NULL && curr->keybit != *c)
         curr = curr->sibling;
      if (curr == NULL) return NULL;
      if (*(c+1) == '\0') return curr;
      curr = curr->child; // move down one level
      c++;                // get next character
   }
   return NULL;
}