手作業で要求されたツリー(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 (右) の親です
私はそれが単純化されていることを知っていますが、理論は、それが明確であると仮定して、これらのことをカバーしていないことがよくあります。手伝ってくれてありがとう、