АВЛ-деревья

  1. Теория по АВЛ-деревьям: http://ifmohm.googlepages.com/AVL_Trees.pdf
  2. Должно быть уже написано:
    procedure pullUp(var root : PTreeNode; n : PTreeNode);
    1. root -- корень упорядоченного дерева
    2. выполняется подъем вершины n на один уровень вверх (свойство упорядоченности сохраняется)
  3. Задание на 3
    procedure
    balance(var root : PTreeNode; n : PTreeNode);
    1. root -- корень дерева
    2. вершина n разбалансирована
    3. выполняется балансировка вершины n
    4. для тестирования выполнить полную балансировку дерева вручную
  4. Задание на 4
    function
    partialAdd(var root : PTreeNode; x : TData) : PTreeNode;
    1. root -- корень сбалансированного дерева
    2. если значение x не присутствует в дереве, оно добавляется в дерево
    3. ипраляется значение баланса в вершинах от добавленной до первой разбалансировки
      1. до корня, если ни одна вершина не оказалась разбалансированной
    4. функция возвращает самую нижнюю вершину, в которой в результате добавления нарушился баланс, если такая есть
      1. nil, если баланс во всех вершинах остался допустимым
  5. Задание на 5
    procedure
    addAVL(var root : PTreeNode; x : TData);
    1. добавление в АВЛ-дерево с последующим восстановлением баланса
    2. значения баланса всех веришн вычисляются правильно