前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode108. 将有序数组转换为二叉搜索树[easy](python)

leetcode108. 将有序数组转换为二叉搜索树[easy](python)

原创
作者头像
从不摸鱼的van
发布2023-10-19 19:20:32
2040
发布2023-10-19 19:20:32
举报
文章被收录于专栏:van的取经之路van的取经之路

题目描述:

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

思路

要构建平衡二叉树,就要保证左右孩子节点高度一样,所以考虑使用分治法,将数组最中间的数作为根节点,按照这个节点将数组分成左右两部分,分别作为左右孩子,然后递归寻找两个子数组的中间的数。要注意这里不用实际分成两个数组,只需要将数组下标记住即可。

题解:

代码语言:python
复制
# 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]:
        return self.build(nums,0,len(nums)-1)
    
    def build(self,arr,left,right):
        if left > right :
            return None
        mid = (left + right) // 2
        ans = TreeNode(arr[mid])
        ans.left =  self.build(arr,left,mid-1)
        ans.right =  self.build(arr,mid+1,right)
        return ans
运行内存与时间
运行内存与时间

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 思路
  • 题解:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档