Мне просто интересно, сможет ли кто-нибудь разъяснить мне определение сбалансированного дерева. У меня есть, что «дерево сбалансировано, если каждое поддерево сбалансировано, а высота двух поддеревьев отличается не более чем на единицу.
Прошу прощения, если это глупый вопрос, но применимо ли это определение к каждому узлу вплоть до листьев дерева или только к левому и правому поддеревьям сразу за корнем? Я предполагаю, что это можно было бы описать другим способом: возможно ли, чтобы внутренние узлы дерева были несбалансированными, а все дерево оставалось сбалансированным?
Ответы:
Ограничение обычно применяется рекурсивно к каждому поддереву. То есть дерево сбалансировано, только если:
По этому уравновешивается следующее дерево:
Следующее не сбалансировано, потому что поддеревья C отличаются по высоте на 2:
При этом конкретное ограничение первой точки зависит от типа дерева. Перечисленное выше является типичным для деревьев AVL .
Например, красно-черные деревья накладывают более мягкие ограничения.
источник
Есть несколько способов определить «Сбалансированный». Основная цель - сохранить глубины всех узлов
O(log(n))
.Мне кажется, что условие баланса, о котором вы говорили, относится к дереву AVL .
Вот формальное определение условия баланса AVL-дерева :
Следующий вопрос, что такое « высота »?
Есть один странный, но частый случай:
Например, левый дочерний элемент root
null
:Еще два примера для определения:
Да, пример сбалансированного дерева :
Нет, пример не сбалансированного дерева :
источник
Между этими двумя вещами нет разницы. Подумай об этом.
Давайте возьмем более простое определение: «Положительное число - это даже если оно равно нулю или это число минус два - четное». Означает ли это, что 8 даже если 6 четное? Или это означает, что 8 даже если 6, 4, 2 и 0 четные?
Нет никакой разницы. Если он говорит, что 8 даже если 6 четно, он также говорит, что 6 даже если 4 четное. Таким образом, он также говорит, что 4 - это даже, если 2 - четное. Таким образом, он говорит, что 2 - это даже если 0 - четное. Итак, если он говорит, что 8 даже если 6 четное, он (косвенно) говорит, что 8 даже если 6, 4, 2 и 0 четные.
Здесь то же самое. Любое косвенное поддерево можно найти по цепочке прямых поддеревьев. Таким образом, даже если он применяется непосредственно только к прямым поддеревьям, он по-прежнему применяется косвенно ко всем поддеревьям (и, следовательно, ко всем узлам).
источник
Сбалансированное дерево - это дерево, высота которого порядка логарифма (количества элементов в дереве).
За данным определением «дерево сбалансировано, каждое поддерево сбалансировано и высота двух поддеревьев отличается не более чем на единицу» сопровождается деревьями AVL.
Поскольку деревья AVL сбалансированы, но не все сбалансированные деревья являются деревьями AVL, сбалансированные деревья не содержат этого определения, и внутренние узлы в них могут быть несбалансированными. Однако деревья AVL требуют, чтобы все внутренние узлы были сбалансированы.
источник
цель сбалансированного дерева - достичь листа с минимальным обходом (минимальная высота). Степень дерева - это количество ветвей минус 1. Сбалансированное дерево не может быть двоичным.
источник
источник