// Алгоритм рекурсивного добавления нового узла в дерево. private void AddTo(AVLTreeNode <T> node, T value) { // Вариант 1: Добавление нового значения в дерево. Значение добавлемого узла меньше чем значение текущего узла. if (value.CompareTo(node.Value) < 0) { //Создание левого узла, если его нет. if (node.Left == null) { node.Left = new AVLTreeNode <T>(value, node); } else { // Переходим к следующему левому узлу AddTo(node.Left, value); } } // Вариант 2: Добавлемое значение больше или равно текущему значению. else { //Создание правого узла, если его нет. if (node.Right == null) { node.Right = new AVLTreeNode <T>(value, node); } else { // Переход к следующему правому узлу. AddTo(node.Right, value); } } //node.Balance(); }
// конструктор public AVLTreeNode(TNode value, AVLTreeNode <TNode> parent) { Value = value; Parent = parent; }