Итерация, а не рекурсия означает, что вы идете по дереву, вместо того, чтобы каждый вызов функции порождал два новых вызова функции, вы можете хранить каждый элемент слоя в массиве.Попробуйте начать с (одного элемента) массива, содержащего указатель на корень.Затем в цикле (я бы просто использовал while (1)) итерацию по этому массиву (currentLayer), создание нового массива (nextLayer) и добавление дочерних элементов каждого элемента currentLayer в nextLayer.Если следующий слой пуст, вы находитесь на самом глубоком слое, в противном случае увеличьте глубину на единицу, скопируйте nextLayer в currentLayer и сделайте это снова.