手作業で要求されたツリー(bst>avl)のバランシングを実行しましたが、本当に簡単だったので、正しく実行できたかどうかはわかりません。
a
/ \
e3になる
/ \
e1 e2
初期状態: 'a' は 'b' (左) と 'e3' (右) の親、'b' は 'e1' (左) と 'e2' (右) の親です。
右回転を適用すると、次のようになります。
b
/ \
e1a
/ \
e2 e3
左側に子 'e1'、右側に子 'a' を持つ 'a' の代わりに 'b' を使用すると、'a' は左側に 'b' の 'e2' を取得します。
だから質問:
- e1 自体が他の要素を含むサブツリーまたはノードである場合でも、このローテーションを実行できますか?
- 2. e2 と e3 がない場合でも、このローテーションを実行できますか?
例 11; 12;16
16
/
13
/
10
初期状態: 16 は 13 の親であり、13 は 10 の親です。それから実行できますか: 13 は 10 (左) と 16 (右) の親です
私はそれが単純化されていることを知っていますが、理論は、それが明確であると仮定して、これらのことをカバーしていないことがよくあります。手伝ってくれてありがとう、