Data-structures-algorithms-binary-search-tree
提供:Dev Guides
データ構造-バイナリ検索ツリー
バイナリ検索ツリー(BST)は、すべてのノードが下記のプロパティに従うツリーです-
- ノードの左のサブツリーのキーは、親ノードのキー以下です。
- ノードの右サブツリーには、親ノードのキーよりも大きいキーがあります。
したがって、BSTはすべてのサブツリーを2つのセグメントに分割します。左のサブツリーと右のサブツリーと定義することができます-
表現
BSTは、BSTプロパティを維持するように配置されたノードのコレクションです。 各ノードにはキーと関連付けられた値があります。 検索中に、目的のキーがBSTのキーと比較され、見つかった場合は、関連付けられた値が取得されます。
以下は、BSTの図解です-
ルートノードキー(27)の左側のサブツリーには値の小さいキーがあり、右側のサブツリーには値の大きいキーがあることがわかります。
基本操作
以下は、ツリーの基本的な操作です-
- 検索-ツリー内の要素を検索します。
- 挿入-ツリーに要素を挿入します。
- Pre-order Traversal -事前順序でツリーを走査します。
- In-order Traversal -ツリーを順序どおりに走査します。
- Post-order Traversal -ポストオーダー方式でツリーを横断します。
Node
いくつかのデータ、その左および右の子ノードへの参照を持つノードを定義します。
検索操作
要素を検索するときは、必ずルートノードから検索を開始してください。 次に、データがキー値よりも小さい場合、左側のサブツリーで要素を検索します。 それ以外の場合は、右のサブツリーで要素を検索します。 各ノードで同じアルゴリズムに従います。
アルゴリズム
挿入操作
要素を挿入するときは、まず適切な場所を見つけてください。 ルートノードから検索を開始し、データがキー値より小さい場合は、左側のサブツリーの空の場所を検索してデータを挿入します。 それ以外の場合は、右側のサブツリーで空の場所を検索し、データを挿入します。