参考: @MS SDE 面接第3回でこんな質問をされました。そしてそれは宿題の問題ではありません。私もそれを考え、以下の私のアプローチに言及しました.
質問: BST を変更して、可能な限りバランスがとれるようにします。言うまでもなく、できるだけ効率的に行う必要があります。
ヒント:
インタビュアーは、これは論理的な質問だと言いました。別の考え方をすれば、答えが得られます。難しいコーディングは必要ありません。
--> そうは言っても、私が AVL/RB Trees を指し示すことを彼が期待していたとは思いません。
私の解決策: 私は、ツリーを順番にトラバーサルし、中間要素を新しいツリーのルートとして使用することを提案しました(新しいルートと呼びましょう)。次に、中間要素の左部分に移動し、その中間要素をツリー ルートの新しいルートの左サブツリーのルートとして取得します。右側も同様。これを再帰的に行うと、最適なバランスの取れた BST が得られます。
ここに投稿する理由: しかし、彼は答えに満足していませんでした :( それで、ウェイト/RBカラーリング戦略を使用せずにこれを行う方法は本当にありますか、それとも彼はただ私をだましていたのでしょうか?あなたの専門家の考え。
複製?いいえ!この質問が あることは知っていますが、リクエスタによって提案された解決策は複雑すぎて、他の人は AVL ツリーについて話しています。