package trie import ( "gitlab.dms3.io/p2p/go-p2p-xor/key" ) // Find looks for the key q in the trie. // It returns the depth of the leaf reached along the path of q, regardless of whether q was found in that leaf. // It also returns a boolean flag indicating whether the key was found. func (trie *Trie) Find(q key.Key) (reachedDepth int, found bool) { return trie.FindAtDepth(0, q) } func (trie *Trie) FindAtDepth(depth int, q key.Key) (reachedDepth int, found bool) { switch { case trie.IsEmptyLeaf(): return depth, false case trie.IsNonEmptyLeaf(): return depth, key.Equal(trie.Key, q) default: return trie.Branch[q.BitAt(depth)].FindAtDepth(depth+1, q) } }