Балансировка бинарного дерева поиска на примере
Мне нужно сбалансировать уже существующее бинарное дерево. Внизу приведён чисто теоретический вариант дерева. Пытался его балансировать при помощи поворотов, но ничего не вышло. Также у меня нигде не хранится мера дисбаланса для вершин. Подскажите алгоритм (а лучше псевдокод) при помощи которого можно сбалансировать дерево.
20
/ \
/ \
10 25
/ \ /\
5 18 23 27
/ /
3 15
/ / \
1 14 16
/ \
13 17
/
12