У меня уже есть рабочая база данных двоичного дерева.К сожалению, он должен иметь способность балансировать себя.Я не хочу переписывать все это, я просто хочу включить функцию, которая уравновесит дерево.Какие-нибудь алгоритмы или идеи?
AVL и RedBlack деревья - это самобалансируемые деревья.Вы можете пройти свое оригинальное дерево и вставить узлы в эти деревья.После этого вы можете сохранить новое дерево и отказаться от своего исходного дерева.
Мне показалось полезным руководство по Stanford libavl .
Посмотрите примеры в AVL tree вики.
Также попробуйте поиграть с анимацией дерева AVL, доступной в Интернете, например,
http://www.cs.jhu.edu/~goodrich/dsa/trees/avltree.html или
http://www.strille.net/works/media_technology_projects/avl-tree_2001/ или
http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html
AVL и красно-черные деревья являются сбалансированными бинарными деревьями. У меня есть реализация деревьев AVL. Смотрите здесь . Он поддерживает вставку и поиск. Удаление еще не реализовано.
искать сбалансированные деревья, такие как авл красный черный