На странице двоичного дерева Википедии:
Сбалансированное бинарное дерево имеет минимально возможную максимальную высоту (также известную как глубина) для листовых узлов, потому что для любого заданного количества листовых узлов листовые узлы размещаются на максимально возможной высоте.
Одной из распространенных сбалансированных древовидных структур является бинарная древовидная структура, в которой левое и правое поддеревья каждого узла отличаются по высоте не более чем на 1.
Например:
Это сбалансированное дерево.
![введите здесь описание изображения](https://i.stack.imgur.com/B7cfk.png)
И если мы вставим 1
, его высота увеличится на 1. Тем не менее, это снова сбалансированное дерево. Потому что левое и правое поддеревья отличаются по высоте не более чем на 1.
![введите здесь описание изображения](https://i.stack.imgur.com/SX26D.png)
Кстати, дерево AVL — это самобалансирующееся бинарное дерево поиска. Так что невозможно потерять равновесие после вставки. Потому что после каждой вставки дерево балансирует себя, совершая необходимые повороты.
Мне кажется, вы неправильно используете термин сбалансированный. Вы считаете сбалансированным отсутствие разницы в росте, но это не более 1 разницы в высоте в определении.
Ваш вопрос:
В стандартном процессе вставки дерева AVL возможно ли увеличение высоты поддерева на единицу (из-за операции вставки и поворота), в то время как поддерево (после увеличения высоты на единицу) по-прежнему имеет ту же высоту слева/ правильный ребенок?
Если бы у нас было дерево, имеющее одинаковую высоту с левой и правой ветвей, и если бы мы вставили узел в листовой узел на левой ветви, высота увеличилась бы, потому что высота дерева равна maximum(height(left_branch, right_branch))
. Потому что после этой операции height(left_branch)
равно height(right_branch)+1
. Значит, они не могут быть равны.
Короче говоря, ваше предварительное условие height(left_branch) == height(right_branch)
Ваша операция increasing height of left_branch by 1
Таким образом, условие height(left_branch) == height(right_branch)
больше не может быть правдой.
person
ferit
schedule
24.03.2016