私は自分のコードに AVL ツリーを C++ で実装していますが、この問題はコード自体よりも AVL ツリーを理解することに関係しています。ここに収まらない場合は申し訳ありませんが、インターネットをクロールしましたが、まだ問題の解決策が見つかりません.
私のコードは、比較的小さな入力 (~25-30 桁) で期待どおりに動作するので、それ以上の入力でも動作するはずです。挿入中にアクセスしたノードを保持する配列を使用してから、while ループを使用して、必要に応じて各ノードの高さを上げています。高さが等しいノードが見つかったら、この手順を終了する必要があることを知っています。 (それらの減算結果は 0 です)。
問題は、バランスをとるときです。各ノードのバランス係数を見つけて、ツリーのバランスを正しくとることはできますが、バランスを取った後に高さの調整をやめて、挿入ループを終了するか、条件が意図されるまで続行するかはわかりません。今それを出します。ノードの削除とツリーの再バランスの間、チェックを続ける必要があることはわかっていますが、挿入とバランスについてはよくわかりません。
誰でもこれについての洞察と、おそらくいくつかのドキュメントを提供できますか?