Обход предзаказа:

В продолжение своего первого поста я хотел бы поделиться предзаказным обходом бинарного дерева с рекурсией:

Шаг 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.

Спасибо.