Я думаю, что структура данных стека поможет вам получить желаемый результат.
Когда вы начинаете с узла, pu sh all направляет потомков из вашего словаря в стек.
Затем начните обработку. Каждый поп из стека должен быть напечатан с последующей проверкой, есть ли у них прямые потомки. Если это так, выведите sh их в стек.
Повторяйте вышеуказанный шаг, пока стек не опустеет.