Я выполнил балансировку дерева (bst> avl), запрошенного вручную, и мне интересно, что это было действительно легко, поэтому я не уверен, правильно ли я это сделал.
a
/ \
b e3
/ \
e1 e2
начальное состояние: «a» является родителем «b» (слева) и «e3» (справа), «b» является родителем «e1» (слева) и «e2» (справа).
применение правого поворота дает нам:
b
/ \
e1 a
/ \
e2 e3
'b' вместо 'a' с дочерним элементом 'e1' слева и 'a' дочерним элементом справа, 'a'получает 'e2' от 'b' слева.
Итак, вопросы:
- Если e1 само по себе является поддеревом или узлом, содержащим другие элементы, могу ли я сделать это вращение?
- 2.Если e2 и e3 отсутствуют, могу ли я сделать это вращение?
пример 11;12; 16
16
/
13
/
10
начальное состояние: 16 является родителем 13 и 13 является родителем 10. Могу ли я сделать из этого: 13 является родителем 10 (слева) и 16 (справа)
Я знаю, что это упрощенно, но теория часто не покрывает эти вещи, предполагая, что это понятно, ну, не для всех.Спасибо за помощь,