【にぶんぎ】

二分木(バイナリツリー) とは?

💡 「左か右か」の2択で高速にデータを探す
📌 このページのポイント
二分探索木(Binary Search Tree) 8 4 12 2 6 10 15 左 < 親 親 < 右 左の子 < 親ノード < 右の子 を常に維持 → 高速な探索が可能
二分探索木のイメージ(左 < 親 < 右)
ひよこ ひよこ

二分木って何に使うの?

ペンギン先生 ペンギン先生

一番身近なのはデータベースインデックスB木やB+木(二分木の発展形)でインデックスを構築して高速検索を実現している。他にもコンパイラの構文解析木、ファイルシステムディレクトリ構造、ハフマン符号化による圧縮など用途は広いよ

ひよこ ひよこ

二分探索木って何?

ペンギン先生 ペンギン先生

左の子<親<右の子という規則を満たす二分木だよ。データを探すとき、探したい値が親より小さければ左へ、大きければ右へ進む。うまくバランスが取れていれば、n個のデータからO(log n)で検索できる。1000個のデータなら約10回の比較で見つかるんだ

ひよこ ひよこ

バランスが崩れるとどうなるの?

ペンギン先生 ペンギン先生

最悪の場合、すべてのノードが一直線に並んでリスト状になる(偏木)。こうなると検索がO(n)になって二分探索の意味がなくなる。これを防ぐのが平衡二分木(AVL木赤黒木)で、挿入・削除のたびに自動的にバランスを保つんだよ

ひよこ ひよこ

走査(トラバーサル)って何種類あるの?

ペンギン先生 ペンギン先生

主に3種類。前順(preorder:親→左→右)、中順(inorder:左→親→右)、後順(postorder:左→右→親)。二分探索木を中順走査すると昇順にデータが取り出せる。これはIPA試験でもよく出題されるから、小さい木で手を動かして練習するのがおすすめだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「二分木」って出てきたら「各ノードが最大2つの子を持つ木構造」と思えればだいたいOK!
📖 おまけ:英語の意味
「Binary Tree」 = 二分木・二項木
💬 Binary(2つの)Tree(木)。データベースのインデックスからコンパイラの構文解析まで幅広く使われるよ
← 用語集にもどる