[LeetCode&Python] Problem 108. Convert Sorted Array to Binary Search Tree

时间:2023-03-08 21:36:56
[LeetCode&Python] Problem 108. Convert Sorted Array to Binary Search Tree

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.

Example:

Given the sorted array: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
/ \
-3 9
/ /
-10 5
# 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
"""
def bst(n,r):
l=len(n)
if l==1:
if n[0]<=r.val:
r.left=TreeNode(n[0])
else:
r.right=TreeNode(n[0])
elif l>1:
mid=l//2
r2=TreeNode(n[mid])
if r.val>=r2.val:
r.left=r2
else:
r.right=r2
bst(n[:mid],r2)
bst(n[mid+1:],r2)
if nums:
ln=len(nums)
root=TreeNode(nums[ln//2])
bst(nums[:ln//2],root)
bst(nums[ln//2+1:],root)
return root
else:
return nums