题目
Python
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
return self.build(nums, 0, len(nums)-1)
def build(self, nums: List[int], start_idx: int, end_idx: int):
if start_idx > end_idx:
return None
mid = start_idx + (end_idx - start_idx) // 2
root = TreeNode(nums[mid])
left = self.build(nums, start_idx, mid-1)
right = self.build(nums, mid+1, end_idx)
root.left = left
root.right = right
return root
Java
法1:递归
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums.length == 0) {
return null;
} else if (nums.length == 1) {
return new TreeNode(nums[0]);
}
return build(nums, 0, nums.length - 1);
}
public TreeNode build(int[] nums, int start, int end) {
if (start > end) {
return null;
} else if (start == end) {
return new TreeNode(nums[start]);
}
int mid = start + (end - start) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = build(nums, start, mid - 1);
root.right = build(nums, mid + 1, end);
return root;
}
}