Q: Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
把一个有序的数组转换成二分查找树~ 把中间元素当根节点,然后递归构造左右子树~时间复杂度是O(N)
class Solution:
# @param num, a list of integers
# @return a tree node
def sortedArrayToBST(self, num):
if num is None or len(num) == 0: return None
return self.createBST(num, 0, len(num) - 1)
def createBST(self, num, start, end):
if start > end: return None
mid = start + (end - start) / 2
root = TreeNode(num[mid])
root.left = self.createBST(num, start, mid - 1)
root.right = self.createBST(num, mid + 1, end)
return root