題目要求將一個升序排列的數組轉換為一棵高度平衡的二元搜尋樹。
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
if not nums:
return None # 如果數組為空,返回空樹
# 選擇中間元素作為根節點
mid = len(nums) // 2
root = TreeNode(nums[mid])
# 遞迴構建左子樹和右子樹
root.left = self.sortedArrayToBST(nums[:mid])
root.right = self.sortedArrayToBST(nums[mid+1:])
return root
這個題目要求我們在一棵二元搜尋樹中查找一個指定的值,並返回包含該值的節點。如果該值不存在,則返回 None
。
因為二元搜尋樹的特性:
因此,我們可以根據這些特性來進行搜索:
class Solution:
def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
# 基本情況:當節點為空或者找到目標值時,返回當前節點
if root is None or root.val == val:
return root
# 如果目標值小於當前節點值,繼續在左子樹搜索
if val < root.val:
return self.searchBST(root.left, val)
# 如果目標值大於當前節點值,繼續在右子樹搜索
return self.searchBST(root.right, val)