━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ データ構造・アルゴリズム論 確認問題8 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●問 (2分探索木の基本操作) 次の2分探索木に (1), (2), (3) の操作を実行した後の2分探索木をそれぞれ図示せよ. (1), (2), (3) で一つずつ,三つの木を示すこと. 50 / \ 10 55 \ 45 / 35 / \ 15 40 (1) 60, 25, 5, 20, 30 の順に挿入.ただし,常に葉に要素を追加すること. (2) (1) の後に 40, 55 の順に(授業で扱ったアルゴリズムで)削除. (3) (2) の後に 10 を(授業で扱ったアルゴリズムで)削除. ────────────────────────────────────── ●答 (2分探索木の基本操作) 授業で扱ったアルゴリズムで (1), (2), (3) の操作を実行してできる2分探索木を, それぞれ以下に示す. (1) 50 / \ 10 55 / \ \ 5 45 60 / 35 / \ 15 40 \ 25 / \ 20 30 (2) 50 / \ 10 60 / \ 5 45 / 35 / 15 \ 25 / \ 20 30 (3) 50 / \ 15 60 / \ 5 45 / 35 / 25 / \ 20 30 [解説] (1) 2分探索の失敗位置に要素を順次追加する. (2) 削除要素(55)の子が一つなので,部分木(60)を削除位置(50の右)につなぐ. (3) 削除要素(10)の子が二つなので,次に大きい値(15)で上書きし,空いた位置 (15のあった位置)に(25を根とする)部分木をつなぐ.授業で扱った削除のアルゴリズム では,教科書のプログラムと同様に,削除要素の子が二つの場合にその次に大きい値で 置き換える.削除要素の直前の値で置き換えるようにアルゴリズムを変えても, 削除後にも2分探索木条件は保たれる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 授業のホームページ 山田 俊行 https://www.cs.info.mie-u.ac.jp/~toshi/