木構造早わかり集

木構造早わかり集
http://els.ai-plus.com/
木構造の基本ルール
木構造の一番上の節点を、
根(ルート)という
根
節点
葉
http://els.ai-plus.com
○印を節点(ノード)と
いい、ここにデータが
入っている
節点
葉
葉
これ以上先がない節点を、
葉(リーフ)という
• データの入っている
○印の部分が、節
点(ノード)
• 頂上にある節点のこ
とを、根(ルート)と
呼ぶ
• これ以上先がない節
点のことを、葉(リー
フ)と呼ぶ
2分木
• 根(ルート)や節点(ノード)が、3本以上に分
岐しない木構造
根や節点からの
分岐が1本か2本
根
2分木でない例
根
節点
節点
節点
葉
葉
葉
葉
こんな形であれば、すべて2分木
http://els.ai-plus.com
節点
葉
葉
葉
一つの節点から3つ分岐している
ので、2分木とはいわない
2分探索木
• 2分木の一種
• 左へ分岐すると小さい値、右へ分岐すると大
きい値が入っている
28を探索する例(スライドショー参照)
26は、32より
小さい
32
26
45は、32より
大きい
45
根から探索開始
28は、32より小さ
いので左へ
32
26
17
28
50
28は、26より大きい
17は、26より小さい
http://els.ai-plus.com
45
50は、45より大きい
17
28は、26より大
きいので右へ
28
50
上から順にたどれば、
目的の値に到着
完全2分木
• 2分木の一種
• 分岐が必ず2本で、深さがすべて同じ
完全2分木でない例
根
根
節点
葉
節点
葉
葉
節点
葉
根や節点から、必ず2本に分岐
http://els.ai-plus.com
葉
節点
葉
葉
1本しか分岐していない節点がある
ので、完全2分木とはいわない
バランス木
• 完全2分木が理想的な形だが、節点の数が
2n-1個でないといけないので、現実的にはか
なり作りにくい
• そこで、なるべく左右のバランスが良くなるよ
う、節点の位置を調節した木
• バランスの取り方によって、完全バランス木、
AVL木、B木がある
http://els.ai-plus.com
完全バランス木
• バランス木の一種
• 左右の節点の個数の差が1個以下
正しい完全バランス木の例
1個 1個 1個 1個
3個
3個
7個
完全バランス木ではない例
1個 1個
3個
1個
2個
6個
どの節点から数えても、左右の節点の
個数の差が0、または1個
http://els.ai-plus.com
1個 1個 1個 1個
3個
3個
7個
1個
1個
2個
2個
5個
1つでも左右の節点の個数の差が2個
以上なら、完全バランス木とは呼ばな
い
AVL木
• バランス木の一種
• 左右の節点の深さの差が1以下
正しいAVL木の例
AVL木ではない例
根からの
根からの
深さ1
深さ1
根からの
深さ2
深さの差 1
根からの
深さ3
どの節点から数えても、根に到達する
までの節点の個数(深さ)の差が0、ま
たは1個
http://els.ai-plus.com
深さの
差2
根からの
深さ2
根からの
深さ3
1つでも深さの差が2個以上なら、AVL
木とは呼ばない
B木
• バランス木の一種
• 左右の節点の深さが同じ
正しいB木の例
B木ではない例
根からの
根からの
深さ1
深さ1
根からの
根からの
深さ2
深さ2
根からの
根からの
深さ3
深さ3
どの節点から数えても、根に到達する
までの節点の個数(深さ)が同じ
http://els.ai-plus.com
深さが異なる部分があれば、B木とは
呼ばない
ヒープ木
• 親節点の値は、どの子節点よりも大きい
• 根(ルート)が、最大値
データの追加(スライドショー参照)
50
50が最大値
32は、17や26
より大きい
50
32
17
http://els.ai-plus.com
45は、28より
大きい
17
45
26
32
28
45
26
28
55
親節点のほうが小さければ、入れ替え