メインコンテンツへ
アルゴリズムとプログラミングAVL木の回転

AVL木でノードを挿入した後に「左左型(LL型)」の不均衡が発生した場合の修正操作はどれか。

ア.不均衡ノードを軸に右回転(Right Rotation)を行う。正解
イ.不均衡ノードを軸に左回転(Left Rotation)を行う。
ウ.左子を軸に左回転した後、不均衡ノードを軸に右回転する(左右二重回転)。
エ.右子を軸に右回転した後、不均衡ノードを軸に左回転する(右左二重回転)。

解説

AVL木の回転は「天秤が左に傾いたら右に引っ張り上げる」操作。LL型は左側が重いので右回転で修正します。

なぜ ア が正解か

LL型不均衡は「不均衡ノードの左子の左側に挿入が起きた」ケースです。修正には不均衡ノードを軸とした「右回転(Right Rotation)」を1回行います。 右回転の手順: ① 不均衡ノードAの左子Bを新しい根にする ② BのパスをAの左子にする(Aの左←Bの右) ③ AをBの右子にする これでAとBの高さが均衡します。LL型は1回の回転で解決できる「単純回転」の代表例です。

なぜ イ は間違いか

左回転はRR型(右側が重い)の不均衡を修正するための操作です。LL型(左側が重い)に左回転をかけると、かえって不均衡が悪化します。

なぜ ウ は間違いか

左回転してから右回転する「二重回転」はLR型不均衡(左子の右側に挿入)の修正方法です。LL型は単純な右回転1回で解決でき、二重回転は不要です。

なぜ エ は間違いか

右回転してから左回転する「二重回転」はRL型不均衡(右子の左側に挿入)の修正方法です。LL型とは不均衡のパターンが異なります。

出典: AI生成問題(学習用)