Для заданного двоичного дерева напишите функцию, чтобы проверить, является ли данное двоичное дерево полным двоичным деревом или нет.
Полное двоичное дерево — это двоичное дерево, в котором каждый уровень, за исключением, возможно, последнего, полностью заполнен, а все узлы расположены как можно левее. Смотрите следующие примеры.
The following trees are examples of Complete Binary Trees 1 / \ 2 3 1 / \ 2 3 / 4 1 / \ 2 3 / \ / 4 5 6
The following trees are examples of Non-Complete Binary Trees 1 \ 3 1 / \ 2 3 \ / \ 4 5 6 1 / \ 2 3 / \ 4 5
Метод 2 поста прохождения порядка уровней может быть легко изменен, чтобы проверить, является ли дерево Завершенным или нет. Чтобы понять подход, давайте сначала определим термин «полный узел». Узел является «полным узлом», если левые и правые дочерние элементы не пусты (или не равны NULL).
Подход заключается в том, чтобы сделать обход уровня порядка, начиная с корня. В обходе, когда найден узел, который НЕ является полным узлом, все последующие узлы должны быть конечными узлами.
Кроме того, еще одна вещь должна быть проверена для обработки следующего случая: если у узла есть пустой левый дочерний элемент, то правый дочерний элемент должен быть пустым.
1 / \ 2 3 \ 4
Спасибо Гудду Шарме за то, что он предложил этот простой и эффективный подход.
|
С
|
Джава
|
питон
|
C #
|
Выход:
NOT Complete Binary Tree
Сложность времени: O (n), где n — количество узлов в данном двоичном дереве
Вспомогательное пространство: O (n) для очереди.
Пожалуйста, пишите комментарии, если вы обнаружите, что какой-либо из приведенных выше кодов / алгоритмов неверен, или найдете другие способы решения той же проблемы.
Рекомендуемые посты:
- Проверьте, является ли двоичное дерево полным деревом | Набор 2 (Рекурсивное решение)
- Итеративный обход границы полного двоичного дерева
- Проверьте, является ли двоичное дерево полным двоичным деревом или нет | Итеративный подход
- Проверка на симметричное двоичное дерево (итеративный подход)
- Итеративный подход для проверки, является ли двоичное дерево идеальным
- Проверьте, существует ли значение в отсортированном по порядку уровней бинарном дереве
- Итеративный подход для проверки свойства суммы детей в двоичном дереве
- Связанное полное двоичное дерево и его создание
- Высота полного двоичного дерева (или кучи) с N узлами
- Найти наибольшее полное поддерево в данном двоичном дереве
- Итеративный поиск ключа 'x' в двоичном дереве
- Печатать путь от корня ко всем узлам в полном двоичном дереве
- Создайте полное двоичное дерево из представления связанного списка
- Сумма узлов зеркального отображения полного бинарного дерева по порядку
- Количество ребер в зеркальном отображении полного двоичного дерева
0.00 (0%) 0 votes