Обход предзаказа:
В продолжение своего первого поста я хотел бы поделиться предзаказным обходом бинарного дерева с рекурсией:
Шаг 1. Инициализируйте список целых чисел и стек с помощью универсального типа двоичного дерева.
List‹Integer› mlist= new ArrayList‹Integer›();
Stack‹BinaryTree› stack= new Stack‹BinaryTree›();
*BinaryTree — это класс, который содержит структуру LinkedList с данными и левой и правой переменными той же структуры для хранения адреса.
Шаг 2. Поместите текущий узел (корневой) в стек, если он не нулевой.
Шаг 3.1: извлечь из стека и вставить node.data в список.
Шаг 3.2. Проверьте, не является ли право узла нулевым, если да, то поместите узел.право в стек.
Шаг 3.3: проверьте, не является ли значение left of node нулевым, если да, то поместите node.left в стек.
Шаг 4. Повторяйте стек, пока он не станет пустым.
Шаг 5: вернуть список
Распечатайте список, так как коллекция List сохраняет порядок. Таким образом, Order будет обходом PreOrder.
Спасибо.