108 Convert Sorted Array to Binary Search Tree
Original Description
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
- 要求: 给一个有序数组,将其用BST 表示
- 返回:
binary search tree
- 例子:
- input: [-10,-3,0,5,9]
- output: one possible answer [0,-3,9,-10,null,5]
Solution
Recursive 的思想,由于BST的左右子树也是 BST, 确立array的中间点为root, 然后将左右子树 recursively表示成bst.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def sortedArrayToBST(self, nums):
"""
:type nums: List[int]
:rtype: TreeNode
"""
if len(nums) == 0:
return None
mid = len(nums) // 2
bst = TreeNode(nums[mid])
bst.left = self.sortedArrayToBST(nums[:mid])
bst.right = self.sortedArrayToBST(nums[mid + 1:])
return bst