Находишь нужный результат - выходишь наружу
А если чуть подробней, то дерево обходится либо в глубину, либо в ширину, что реализуется либо через стэк, либо через очередь. Поэтому нет никаких проблем сделать класс Locator, который на каждый вызов Next() будет дальше искать в дереве нужный узел, сохранять состояние в виде этого стэка/очереди и возвращать этот узел, чтобы продолжить из той же точки на вызов следующего Next(), хоть IEnumerator на этом деле реализуй.