Если количество уровней заранее не известно и допускается любое - то только рекурсия спасает. Или её имитация - бесконечный цикл с запоминанием родителей для возврата.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший