根:ルートとも呼ばれる。これ以上さかのぼれない一番上位の節(一番親になる節) 枝:節と節をつなぐエッジの事。 節:ここにデータが格納されている。枝によって接続されてる。上位に向かってたどると、必ず根にたどり着くはず 葉:一番下位の節、それ以上の子要素を持たない。
親 根
/\ / | \ ← 枝
子 子 節 節 節
/\ /\ /\
葉 葉 葉 葉 葉
根
/ \
節 節
/ \ / \
節 節 節 節
/\ /\ /\ /\
葉 葉葉 葉葉 葉 葉
struct tree { int node;//格納するデータ struct tree *left; //左の子 struct tree *right; //右の子 }
根
/ \
節 節
/ \ / \
節 節 節 節
/\ /\ /\ /\
葉 葉 葉 葉 葉 葉 葉
0 ← 1段目 1個のデータ
/ \
1 2 ← 2段目 2個のデータ
/ \ / \
3 4 5 6 ← 3段目 4個のデータ
/\ /\ /\ /\
7 8 9 10 11 12 13 14 ← 4段目 8個のデータ
上の図からわかること: n段目には何個の節がある? 2の(n-1)乗個の節(データ)があるよ。
教科書P178(1)の2分木
[ 0][ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8][ 9][10][11][12][13][14] [ 6][ 3][ 7][ 1][ 4][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
(仮) 逆もやってみよう(配列表現→木構造図示)
[ 0][ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8][ 9][10][11][12][13][14] [ 7][ 9][15][22][11][18][27][ ][ ][ ][ ][ ][ ][ ][ ]
練習問題:これは配列で表すとどうなる?
7 / \ 9 15 / \ / \ 22 11 18 27