108.将有序数组转化为二叉搜索树
给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。
高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
题解
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
def insert(node, i, j):
if i > j:
return
ind = (i + j) // 2
new_node = TreeNode(nums[ind])
if nums[ind] < node.val:
node.left = new_node
else:
node.right = new_node
insert(new_node, i, ind - 1)
insert(new_node, ind + 1, j)
mid = len(nums) // 2
root = TreeNode(nums[mid])
insert(root, 0, mid - 1)
insert(root, mid + 1, len(nums) - 1)
return root
思路
使用递归的思想快速解题。二叉搜索树的特点是:左子树的数字小于根节点,右子树的数字大于根节点。