题目
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。
代码
使用递归的方法
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:def helper(left,right):if left > right:return None mid = (left + right + 1)//2 # 总是选择中间位置右边的数字作为根节点# mid = (left + right )//2 # 总是选择中间位置左边的数字作为根节点root = TreeNode(nums[mid])root.left = helper(left, mid - 1)root.right = helper(mid + 1, right)return root return helper(0, len(nums)-1)
关于平衡二叉树的知识讲解和补充可以查看这两篇文章:
- 【数据结构】二叉搜索树
- 数据结构之——平衡二叉树(内容详解)