https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
Code
# 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
"""
self.nums = nums
return self.helper(0, len(nums))
def helper(self, start, end):
if end <= start:
return None
mid = start + (end-start)/2
root = TreeNode(self.nums[mid])
root.left = self.helper(start, mid)
root.right = self.helper(mid+1, end)
return root
Idea
The same idea to https://czxttkl.com/?p=1366 but easier because you have full view of the whole list.