最初に、問題の要件を理解しましょう。与えられたソート済み配列を使用して、最小高さの二分探索木を作成する必要があります。つまり、生成される木の高さをできるだけ小さくする必要があります。
アプローチの一つは、再帰的な方法を使用することです。以下に、簡単な手順を示します。
- 中央の要素を選択します。これはソート済み配列の中央の要素です。
- 中央の要素をルートノードとして、新しい二分探索木を作成します。
- ソート済み配列を左半分と右半分に分割します。
- 左半分の配列に対して再帰的に手順1から3を繰り返します。これにより、左側の部分木が作成されます。
- 右半分の配列に対しても再帰的に手順1から3を繰り返します。これにより、右側の部分木が作成されます。
この再帰的なアプローチにより、与えられたソート済み配列から最小高さの二分探索木が効率的に作成されます。
以下に、Pythonでの具体的な実装例を示します。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sortedArrayToBST(nums):
if not nums:
return None
mid = len(nums) // 2
root = TreeNode(nums[mid])
root.left = sortedArrayToBST(nums[:mid])
root.right = sortedArrayToBST(nums[mid+1:])
return root
# テスト用のソート済み配列
nums = [1, 2, 3, 4, 5, 6, 7]
# 最小高さの二分探索木を作成
root = sortedArrayToBST(nums)
# 作成した二分探索木の表示
def printTree(node):
if node is None:
return
print(node.val)
printTree(node.left)
printTree(node.right)
printTree(root)
以上が、LeetCodeでの最小高さの二分探索木の作成方法のシンプルな解説とコード例です。このアプローチを使えば、ソート済み配列から最小高さの二分探索木を効率的に作成することができます。