Дано совершенное двоичное дерево, как показано ниже:
(нажмите на изображение, чтобы получить четкое представление)
Распечатайте порядок уровней узлов следующим определенным образом:
1 2 3 4 7 5 6 8 15 9 14 10 13 11 12 16 31 17 30 18 29 19 28 20 27 21 26 22 25 23 24
т.е. печатать узлы в порядке уровней, но узлы должны быть слева и справа поочередно. Здесь 1- й и 2- й уровни тривиальны.
В то время как 3- й уровень: 4 (слева), 7 (справа), 5 (слева), 6 (справа) печатаются.
В то время как 4- й уровень: 8 (слева), 15 (справа), 9 (слева), 14 (справа), .. печатаются.
В то время как 5- й уровень: 16 (слева), 31 (справа), 17 (слева), 30 (справа), .. печатаются.
Мы настоятельно рекомендуем свернуть ваш браузер и попробовать это в первую очередь.
В стандартном уровне заказа Traversal , мы епдиеий корень в очереди 1 — го, то из очереди одного узла из очереди, процесс (печать) он, епдиеяя своих ребенок в очередь. Мы продолжаем делать это, пока очередь не опустеет.
Подход 1:
Здесь мы также можем выполнить стандартный порядок обхода порядка, но вместо прямой печати узлов мы должны хранить узлы текущего уровня во временном массиве или списке 1- го списка, а затем брать узлы с альтернативных концов (слева и справа) и печатать узлы. Продолжайте повторять это для всех уровней.
Этот подход требует больше памяти, чем стандартный обход.
Подход 2:
Идея прохождения стандартного уровня здесь немного изменится. Вместо обработки ОДНОГО узла за раз, мы будем обрабатывать ДВА узла за раз. И в то время как толкая ребенок в очередь, порядок Епдиеего будет: левый ребенок 1 — го узла, 2 правых дочерним Н.Д. узла, право ребенок 1 — го узла и 2 — й левого потомка узла.
|
Джава
|
питон
|
C #
|
Выход:
Specific Level Order traversal of binary tree is 1 2 3 4 7 5 6 8 15 9 14 10 13 11 12 16 31 17 30 18 29 19 28 20 27 21 26 22 25 23 24
Последующие вопросы:
- Приведенный выше код печатает определенный порядок уровней от TOP до BOTTOM. Как вы будете выполнять определенный обход уровня от ДНА до ТОП ( Amazon Interview | Set 120 — Last Round Last Problem )
- Что делать, если дерево не идеально, но завершено.
- Что, если дерево не является ни совершенным, ни полным. Это может быть любое общее двоичное дерево.
Эта статья предоставлена Анураг Сингх . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Perfect Бинарное дерево Специфичный уровень Порядок обхода | Набор 2
- Распечатать двоичное дерево в вертикальном порядке | Набор 3 (с использованием обхода уровня)
- Выровнять двоичное дерево в порядке обхода порядка уровней
- При заданном уровне порядка обхода двоичного дерева, проверьте, является ли дерево минимальной кучей
- Плотность бинарного дерева с использованием уровня обхода порядка
- Рассчитать высоту бинарного дерева с помощью Inorder и Level Order Traversal
- Проверьте, приводит ли обратный порядок уровней двоичного дерева к палиндрому
- Проверьте, может ли данный массив представлять уровень порядка обхода дерева двоичного поиска
- Вставка в n-арное дерево в заданном порядке и обход уровня порядка
- Уровень дерева обхода заказа
- Зигзагообразный обход уровня дерева по одной очереди
- Общее дерево (каждый узел может иметь произвольное количество дочерних элементов) Уровень Порядок обхода
- Выровнять двоичное дерево в порядке обхода после заказа
- Вывести средний уровень идеального бинарного дерева, не находя высоты
- Запросы, чтобы найти максимальное значение Xor между X и узлами данного уровня совершенного двоичного дерева
0.00 (0%) 0 votes