0108. Convert Sorted Array to Binary Search Tree
Easy | Binary Search Tree + Inorder Traversal | 40 ms (98.49%), 16.1 MB (78.29%)
Input: nums = [-10,-3,0,5,9]
Output: [0,-3,9,-10,null,5]
Explanation: [0,-10,5,null,-3,null,9] is also accepted:
Input: nums = [1,3]
Output: [3,1]
Explanation: [1,3] and [3,1] are both a height-balanced BSTs.class Solution:
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
#: (base case)
if len(nums) == 1: return TreeNode(nums[0])
if len(nums) == 2: return TreeNode(nums[0], None, TreeNode(nums[1]))
# ==================================================
# Binary Search Tree + Inorder Traversal =
# ==================================================
# time : O(n)
# space : O(n)
self.nums = nums
return self.subTree(0, len(nums) - 1)
def subTree(self, start: int, end: int) -> TreeNode:
if start > end: return None
if start == end: return TreeNode(self.nums[start])
mid = (start + end) // 2
node = TreeNode(self.nums[mid])
node.left = self.subTree(start, mid - 1)
node.right = self.subTree(mid + 1, end)
return nodeLast updated