![見出し画像](https://assets.st-note.com/production/uploads/images/126574571/rectangle_large_type_2_92c034ea5c6242559152469f20ee62e9.png?width=1200)
データ構造_バイナリツリーとは #440
前回からアルゴリズムとデータ構造について書き始めました。
今回はデータ構造の一種であるバイナリツリーの概要についてまとめます。
バイナリツリー(二分木)とは
バイナリツリーは、各ノードが最大で二つの子ノードを持つことができるデータ構造です。
![](https://assets.st-note.com/img/1704523631423-I6ziXb7kn2.png)
バイナリツリーの特徴
ノードベース
それぞれの要素がツリーのノードに格納される
順序性
例えばバイナリサーチツリー(二分探索木)では、左の子ノードが親より小さく、右の子ノードが親より大きい(左<親<右)
このように特定のルールでデータが並ぶため、検索・挿入・削除に効率的
検索効率
バランスが取れている場合、検索、挿入、削除の平均時間複雑度は O(log n)
つまり入力サイズが大きくなっても実行時間は比較的遅く増加する
バイナリツリーの欠点
ツリーが不均衡になると操作の効率が低下します。最悪でO(n)、つまり入力サイズが大きくなるほど、探索にかかる時間も長くなることになります。
バイナリツリーの走査方法
このデータ構造を走査する方法は主に4つあります。
Pre-order Traversal
In-order Traversal
Post-order Traversal
Level-order Traversal
これらの詳細は後日まとめます。
バイナリツリーの利用シーン
高速なデータ処理が要求される、様々なアプリケーションで利用されています。例えば以下です。
データベース管理システム(DBMS)
コンパイラやインタプリタ
グラフィックス
機械学習
奥深くて面白いですね。
どんどん学んでいきたいと思います。