Проблема с идеальной балансировкой дерева AVL

Мне интересно, есть ли фундаментальная проблема для перебалансировки дерева AVL. Согласно нескольким руководствам, для вставки AVL можно сбалансировать максимум 2 поворота. Однако это может зависеть от того, что называется сбалансированным. Перейдите по ссылке, чтобы увидеть дерево.

Изначально в нем 6 элементов. Предположим, что мы вставили последнее значение как 3, 4,5, 5,5 или 6,5. В любом случае он будет вставлен слева внизу. В качестве всего 7-элементного дерева для идеальной балансировки я буду считать, что оно имеет только 3 ряда.

Это приведет к тому, что новый корень будет 6 или 6.5 (если мы вставим 6.5). Я действительно не могу придумать способ перебалансировать его за 2 оборота. Если мы будем полагаться только на определение «баланса», 4 строки по-прежнему будут называться сбалансированными, но это приведет к увеличению времени поиска.

Я что-то упускаю?

В случае, если изображение было удалено, ниже представлена ​​текстовая версия:

                               7
              5                                9
           4     6                         8        Empty_slot
       3 or 4.5 or 5.5 or 6.5


person Lino    schedule 28.04.2015    source источник


Ответы (1)


Как вы можете прочитать в википедии

В дереве AVL высота двух дочерних поддеревьев любого узла отличается не более чем на один

Это не означает, что у вас есть полное дерево! См. Примеры дерева балансов на связанной странице в Википедии.

Таким образом, для любой из предлагаемых вами вставок дерево будет по-прежнему сбалансировано (для общего определения сбалансированного) после вставки.

с одной стороны от корня у вас будет поддерево

      5
  4       6        height 2 
3   #   #   #

а на другой стороне у вас будет поддерево

  9
8   #              height 1

Поскольку у двух поддеревьев разница в высоте только 1, так что все в порядке ... и вы можете проверить, что это свойство истинно для всех узлов.

person Amxx    schedule 28.04.2015
comment
Согласен с вами: он все еще сбалансирован, исходя из определения дерева AVL. Мой настоящий вопрос в том, означает ли это много пустых мест, когда дело идет глубже? - person Lino; 29.04.2015
comment
Сбалансированный аспект AVL означает, что количество пустых мест ограничено. Это компромисс между большим количеством пустых мест (что увеличивает время обхода) и большим количеством вращений (что увеличивает время вставки). - person Amxx; 29.04.2015
comment
Спасибо, Amxx. Я куплю это. - person Lino; 01.05.2015