Если вы начинаете с корневого узла и посещаете только родительские / дочерние узлы уже посещенных вами узлов, не может пройти по дереву так, чтобы вы посетили узел до посещения его предков.
Будет работать любой вид обхода, сначала глубина (рекурсивно / основанный на стеке), ширина сначала (основанная на очереди), ограниченная глубина или просто извлечение их из неупорядоченного набора.
«Лучший» метод зависит от дерева. Ширина сначала будет хорошо работать для очень высокого дерева с несколькими ветвями. Глубина сначала будет хорошо работать для деревьев со многими ветвями.
Поскольку узлы на самом деле имеют указатели на своих родителей, существует также алгоритм постоянной памяти, но он намного медленнее.