ad-4. 二分探索木
1
金子邦彦
(C 言語によるアルゴリズムとデータ構造)(全6回)
URL: https://www.kkaneko.jp/pro/ad/index.html
二分木のデータ構造と3種類の走査法(先行順・中間
順・後行順)の理解と実装
【学習内容の構成】
1. 二分木の構造:要素、左部分木ポインタ、右部分木
ポインタの3セルで構成されるレコード
2. 走査法:先行順(根→左→右)、中間順(左→根→
右)、後行順(左→右→根)の3種類
3. 実装演習:C言語による二分木の作成と各走査法の
プログラム実装
• 前提:C言語の基礎、ポインタの理解
• 意義:再帰的データ構造の理解、木構造を用いたアル
ゴリズム設計能力の習得
2
4-1. 二分探索木
3
二分木とは
レコードを次の3つで構成
• 要素を格納するセル
• 左部分木を指すポインタを格納するセル
• 右部分木を指すポインタを格納するセル
4
左部分木
根(root)
右部分木
二分探索木とは
• 二分探索木では,小さい要素を左部分木に,大き
い要素を右部分木に格納する
• 二分探索木を,中間順 (in-order) で走査すると,
要素は整列(ソート)された順になる
5
左部分木
根(root)
右部分木
要素の削除
• 要素の削除は,場合分けで行う
• 削除する要素に子がない場合
• 削除する要素に子が1つある場合
• 削除する要素に子が2つある場合
6
削除する要素に子がない場合
単純に要素を削除する
4を削除
7
5
9
3
1
4
7
5
9
3
1
7
1,9の削除のときも,
単純に要素を削除する
削除する要素に子が1つある場合
要素を削除する.直下の子要素が置き換わる
5を削除
7
5
9
3
1
4
7
9
3
1
8
削除する要素に子が2つある場合
要素を削除する.左部分木の中にある「最大の要
素」を削除の上で,それが置き換わる
7を削除
7
5
9
3
1
4
9
5
9
3
1
4
4-2. 「二分探索木」を実習で
きる
オンラインサイトの紹介
10
11
「二分探索木」を実習できる
オンラインサイトの紹介
パソコン演習
① Chrome ウェブブラウザを起動する
② 次の URL を開く
https://visualgo.net/ja
③ 「二分探索木」をクリック
12
パソコン演習
④ 説明が出る.ESC キーを押して,説明を消す
⑤ 左下のメニューで「検索」を選び,
「行く」を選ぶ.表示を確認する.
13
パソコン演習
⑥ 今度は,左下のメニューで「入れる」を選び,
「行く」をクリックする.表示を確認する.
⑦ データが増えるので,確認する
14