Обход двоичного дерева, такой как обход в предварительном порядке, обход в обратном порядке, обход в обратном порядке и обход по уровню, обычно опрашивается многими ИТ-компаниями.
Меня смущает воспоминание об итеративной реализации предварительного и неупорядоченного обхода.
Вот проблемы от leetcode.
https://leetcode.com/problems/binary-tree-inorder-traversal/
https://leetcode.com/problems/binary-tree-preorder-traversal/
Проходим по графику, начиная сверху против часовой стрелки. Кричите каждый раз, когда мы проходим СЛЕВА от узла.
Проходим по графику, начиная сверху против часовой стрелки. Кричите каждый раз, кричите, когда пересекаете дно.
Проходим по графику, начиная сверху против часовой стрелки. Кричи каждый раз, кричи, когда переходишь направо
Если вы хотите увидеть больше деталей рекурсивной и итеративной реализации, прочитайте следующий пост
Я помню, как он думал об этом со ссылкой на корневой узел.
Inorder -> означает, что корень находится между левым и правым,
Предварительный порядок -> Корень "до"/перед левым и правым
Post -> Root находится после левого и правого.