アルゴリズム+データ構造
勉強会(11)
2013-04-22 アロハ)竹腰 彰成
第11回 木構造(1)
木構造の例
• 組織図は木構造の典型
• 親がある
• 子がある
• 図の四角=「節(node)」
信長
光秀 秀吉
三成 正則 清正
勝家
利家
木構造の用語
根(root)
• 一番上の要素=「根(root)」
• 1つしかない
• 例:linuxディレクトリ
• 「/」を「ルートディレクトリ」と呼
ぶ
信長
光秀 秀吉
三成 正則 清正
勝家
利家
葉(leaf)
• 子を持たないノード=「葉」
信長
光秀 秀吉
三成 正則 清正
勝家
利家
非終端節
• 子と親を持つノード
• 非終端節
• 枝節(branch node)
• 内部節(internal node)
信長
光秀 秀吉
三成 正則 清正
勝家
利家
枝
• 枝
• ノードとノードをつなげる
• 枝自体にはデータを持たない
• 枝節(branch node)とは異なる
信長
光秀 秀吉
三成 正則 清正
勝家
利家
親子
• 上下方向のつながり
• 子は1つでも複数でもよい
• 祖父祖母、孫のつながりはあ
まり使わない
信長
光秀 秀吉
三成 正則 清正
勝家
利家
兄弟
• 同一の親を持つノード
• 子を持っていても持たなくても
よい
• いとこの関係はあまり使わな
い
信長
光秀 秀吉
三成 正則 清正
勝家
利家
木構造の禁則事項
• 子は複数の親を持たない
• 技術的に持たせることはでき
るが、それはもはや木構造で
はない別のもの 信長
光秀 秀吉
三成 正則 清正
勝家
利家
二分木
二分木(binary tree)とは
• 2つに分かれる木
• 子は0~2つまで
• 左右に分かれる
• 子が1つの場合、右か左に分かれる。
まっすぐ下にはしない
class BinaryTree
{
var $left_node; //BinaryTreeへの参照、またはnull
var $right_node; //BinaryTreeへの参照、またはnull
var $values; //何らかの値
}
Wikipediaより
予習:DBのindexを調べる
• DBのindexは木構造を使って実装されています。その木構造の概要
および「select * from foobar where id = X」の計算量を説明してくださ
い(200文字以上)
• できあがったら提出してください
• 時間に間に合わない場合は宿題にします
今回の単語のまとめ
• 木構造
• 節、根、葉、枝
• 親子、兄弟
• 二分木

アルゴリズム+データ構造勉強会(11)