Ibaraki Univ. Dept of Electrical & Electronic Eng.

Slides:



Advertisements
Similar presentations
Ibaraki Univ. Dept of Electrical & Electronic Eng. Keiichi MIYAJIMA
Advertisements

ヒープソートの演習 第13回.
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
アルゴリズムとデータ構造 第8回 ソート(3).
2分探索.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 2013年6月18日
アルゴリズムとデータ構造1 2005年7月8日
アルゴリズムとデータ構造 2010年7月5日
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 補足資料13-4 「2分探索木の追加・削除(ダイジェスト)」
アルゴリズムとデータ構造 2012年6月14日
情報工学概論 (アルゴリズムとデータ構造)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
INSERT(x,p,L)の例 (一部) 磯 直行 2009年5月5日
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 2011年6月14日
二分探索木によるサーチ.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Cプログラミング演習 中間まとめ2.
“Purely Functional Data Structures” セミナー
アルゴリズムとデータ構造1 2006年7月4日
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造1 2006年6月16日
アルゴリズムとデータ構造1 2005年7月15日
木の走査.
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
コンパイラ 2012年11月15日
アルゴリズムとデータ構造勉強会 第6回 スレッド木
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第9回 優先度つき待ち行列,ヒープ,二分探索木
電子計算機工学 Keiichi MIYAJIMA Computer Architecture
Cプログラミング演習 第10回 二分探索木.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラミング 4 木構造とヒープ.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
15.cons と種々のデータ構造.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
AVL木.
第9回 優先度つき待ち行列,ヒープ,二分探索木
アルゴリズムとデータ構造 2012年7月2日
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
情報工学概論 (アルゴリズムとデータ構造)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造1 2009年7月2日
アルゴリズムとデータ構造 2013年7月2日
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
平面走査法を使った 一般線分の 交点列挙アルゴリズム
ヒープソート.
ヒープソート.
アルゴリズムとデータ構造 2013年6月20日
Ibaraki Univ. Dept of Electrical & Electronic Eng.
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

Ibaraki Univ. Dept of Electrical & Electronic Eng. 2015. 6. 3 アルゴリズムとデータ構造 Ibaraki Univ. Dept of Electrical & Electronic Eng. Keiichi MIYAJIMA

2分探索木

2分探索木 18 7 22 5 11 21 31 8 15 25 9 木構造の一種で以下の条件を満たしたもの 各頂点vの左の子はvの値より小さく、右の子は大きい 18 7 22 5 11 21 31 8 15 25 9

2分探索木から削除2 18 7 22 5 11 21 31 8 15 25 9 2分探索木からの削除について(その2) 下の木から「7」を削除する場合を考える 18 7 22 5 11 21 31 8 15 25 9

2分探索木から削除2 18 22 5 11 21 31 8 15 25 9 2分探索木からの削除について(その2) 下の木から「7」を削除する場合を考える 18 22 5 11 21 31 8 15 25 9

2分探索木から削除2 18 22 5 11 21 31 8 15 25 9 2分探索木からの削除について(その2) まず、削除したノードの右側を見る。 18 22 5 11 21 31 8 15 25 9

2分探索木から削除2 18 22 5 11 21 31 8 15 25 9 2分探索木からの削除について(その2) 削除したノードの右側の「左の子」が存在するならば、「左の子」を見る。そうでないならば、削除したノードの右側の子がそのまま持ち上がる。 18 22 5 11 21 31 8 15 25 9

2分探索木から削除2 18 22 5 11 21 31 8 15 25 9 2分探索木からの削除について(その2) 今見ているノードに「左の子」が存在するならばさらにその「左の子」を見る。そうでないならば、削除したノードの場所に移動。 18 22 5 11 21 31 8 15 25 9

2分探索木から削除2 18 8 22 5 11 21 31 15 25 9 2分探索木からの削除について(その2) 今移動したノードの部分は削除した場合と同じなので、同様に今移動したノードの右側を見る。 18 8 22 5 11 21 31 15 25 9

2分探索木から削除2 18 8 22 5 11 21 31 15 25 9 2分探索木からの削除について(その2) 今見ているノードには子供が無いので、そのまま上へ移動。 18 8 22 5 11 21 31 15 25 9

2分探索木から削除2 18 8 22 5 11 21 31 9 15 25 2分探索木からの削除について(その2) 今見ているノードには子供が無いので、そのまま上へ移動。 18 8 22 5 11 21 31 9 15 25

本日のまとめ TCP/IPアプリケーション  2分探索木 2分探索木の定義 2分探索木の探索、挿入、削除 2分探索木の探索、挿入、削除

本日の課題 以下の課題について、プログラムを作成し、プログラムと実行結果をプリントアウトしたものを提出すること。 1.集合 を2分探索木で表すプログラムを作り、その後作成した木に23を挿入し、16を削除した後、23がどこにあるか探索し表示するプログラムを作成せよ。 また、一番最後に、2分探索木全体を表示せよ。 2分探索木の表示と印刷は次の関数などを参考にせよ。

2分探索木を表示するサンプルプログラム TCP/IPアプリケーション void printtree(Node *p, int d) { if (p!=NULL){ d++; printtree(p->rightson, d); printf(“%*s%5d\n”, 3*d,” “,p->data);/* 3d個の空白の後ろに出力*/ printtree(p->leftson, d); } void main(){ int d=0; printtree(root, d); TCP/IPアプリケーション

教科書のプログラムを利用する際の注意 教科書のプログラムを使う場合、コンパイラによってはNULLポインタをきちんと設定する必要があります。 例えば、講義で使用しているコンパイラの場合、教科書のinsert関数内やmain関数の中にあるnew関数を使用した直後、 new(&w); w->data=x; w->rightson=NULL; w->leftson=NULL; (この部分を追加) このようにNULLの値を代入しないと、コンパイラはできますが、無限ループにハマって永遠に終わらないプログラムになります。

レポートの〆切と提出先 レポート提出先: E2棟(旧システム棟)6F606室(宮島教員室)前 レポートBOX レポート〆切: 6月9日火曜日 PM5:00頃