AlgoDesign

Minimal tree

1class TreeNode:
2    def __init__(self, val=0, left=None, right=None):
3        self.val = val
4        self.left = left
5        self.right = right
6
7class Solution:
8    def minimalTree(self, nums, l, r):
9        if l > r: return None
10        middle = l + (r - l) // 2
11        val = nums[middle]
12        n = TreeNode(val)
13        n.left = self.minimalTree(nums, l, middle - 1)
14        n.right = self.minimalTree(nums, middle + 1, r)
15        return n