まず、与えられた順序で数値を挿入するための二分探索木の構築方法を見てみましょう。
- 空の二分探索木を作成します。
- 最初の数値を根ノードとして挿入します。
- 次の数値を挿入する場合、以下の手順を実行します。
- 現在のノードが挿入する数値よりも大きい場合、左の子ノードに移動します。
- 現在のノードが挿入する数値よりも小さい場合、右の子ノードに移動します。
- 子ノードが存在しない場合、挿入する数値をその位置に追加します。
- 子ノードが存在する場合、子ノードを新しい現在のノードとして設定し、手順3を繰り返します。
次に、上記の手順を使って与えられた数値を挿入するコード例を示します。
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def insert(root, value):
if root is None:
return Node(value)
if value < root.value:
root.left = insert(root.left, value)
else:
root.right = insert(root.right, value)
return root
def inorder_traversal(root):
if root:
inorder_traversal(root.left)
print(root.value)
inorder_traversal(root.right)
# 空の二分探索木を作成
bst = None
# 数値を挿入
numbers = [10, 1, 3, 5, 15]
for number in numbers:
bst = insert(bst, number)
# ソートされた順序で数値を出力
inorder_traversal(bst)
このコードは、与えられた数値を順番に二分探索木に挿入し、その後、中間順序で木を走査してソートされた順序で数値を出力します。
このように、二分探索木はデータの挿入と検索に効率的なデータ構造です。他の操作方法や応用例もありますが、本回答では挿入と走査に焦点を当てました。