В красно-черном дереве максимальная высота узла не более чем в два раза превышает минимальную высоту ( Четыре красно-черных свойства дерева гарантируют, что это всегда соблюдается). Учитывая бинарное дерево поиска, нам нужно проверить следующее свойство.
Для каждого узла длина самого длинного пути от листа к узлу имеет не более чем вдвое больше узлов на кратчайшем пути от узла к листу.
12 40 \ / \ 14 10 100 \ / \ 16 60 150 Cannot be a Red-Black Tree It can be Red-Black Tree with any color assignment Max height of 12 is 1 Min height of 12 is 3 10 / \ 5 100 / \ 50 150 / 40 It can also be Red-Black Tree
Ожидаемая сложность времени O (n). Дерево должно быть пройдено не более одного раза в решении.
Мы настоятельно рекомендуем свернуть браузер и попробовать это в первую очередь.
Для каждого узла нам нужно получить максимальную и минимальную высоты и сравнить их. Идея состоит в том, чтобы пройти по дереву и для каждого узла проверить, сбалансировано ли оно. Нам нужно написать рекурсивную функцию, которая возвращает три вещи: логическое значение, указывающее, сбалансировано дерево или нет, минимальная высота и максимальная высота. Чтобы вернуть несколько значений, мы можем использовать структуру или передать переменные по ссылке. Мы передали maxh и minh по ссылке, чтобы значения могли использоваться в родительских вызовах.
|
Джава
|
python3
|
C #
|
Выход:
Balanced
Сложность времени: Сложность времени вышеприведенного кода равна O (n), так как код выполняет простой обход дерева.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- Как определить, сбалансировано ли бинарное дерево по высоте?
- Практические вопросы по сбалансированной высоте / AVL Tree
- Проверьте, является ли двоичное дерево полным двоичным деревом или нет | Итеративный подход
- При заданном уровне порядка обхода двоичного дерева, проверьте, является ли дерево минимальной кучей
- Проверьте, является ли двоичное дерево полным деревом | Набор 2 (Рекурсивное решение)
- Высота бинарного дерева, учитывая только четные уровни
- Проверьте, имеет ли данное двоичное дерево поддерево с равными ни один из 1 и 0 | Набор 2
- Высота полного двоичного дерева (или кучи) с N узлами
- Итерационный метод определения высоты двоичного дерева
- Связь между количеством узлов и высотой бинарного дерева
- Найти высоту двоичного дерева, представленного родительским массивом
- Максимальная высота двоичного дерева поиска, созданного из заданного массива
- Проверьте, является ли данное двоичное дерево перекошенным двоичным деревом или нет?
- Проверить, является ли двоичное дерево поддеревом другого двоичного дерева | Набор 2
- Проверить, является ли двоичное дерево поддеревом другого двоичного дерева | Комплект 1
0.00 (0%) 0 votes