【LeetCode】108. 将有序数组转换为二叉搜索树
创始人
2024-11-12 14:06:57
0

1. 题目

在这里插入图片描述

2. 分析

先理解一下平衡二叉树的概念:平衡二叉树重在平衡,同时需要保证顺序大小。

本题的思路比较简单,在构建平衡二叉树的时候,需要保证左右子树的高度相同,高度相同也就意味着要均匀切分,那么对于有序数组直接采取二分的方法是不是就能满足这个要求了呢?(可以手动比画一下,可以发现是没问题的哈)。所以对一个有序数组做二分,小于mid值对应的数组作为左子树,大于mid值的对应数组作为右子树。递归处理即可解决。

如果提高一下难度,可以将本题的数组替换成链表。二分操作不再是简单的(left+right)//2了,而是需要通过快慢指针找到中间节点做分割。更详细的可以参考这篇文章。

3. 代码

# 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]:         root = self.dfs(0, len(nums)-1, nums)         return root      def dfs(self, left, right, nums):        	# 不要忘了下面这种递归的出口         if left > right:             return None         if left == right:             return TreeNode(nums[left])         mid = (left + right) // 2         lnode = self.dfs(left, mid-1, nums)         rnode = self.dfs(mid+1, right, nums)         cur_val = nums[mid]         cur_root = TreeNode(cur_val, lnode, rnode)         return cur_root 

相关内容

热门资讯

wepoke智能ai(红龙软件... wepoke智能ai(红龙软件德州扑克)wpk ai辅助有没有用(软件透明挂)原来真的有挂(有挂规律...
八分钟介绍!wpk俱乐部后台管... 八分钟介绍!wpk俱乐部后台管理系统(黑科技)外挂透明挂辅助机制(2025已更新)(微博客户端);1...
4分钟分享!wepoke算法(... 4分钟分享!wepoke算法(透视辅助)外挂透明挂辅助神器(2021已更新)(百度知乎)1、下载好w...
aapoker透明挂(德州ap... aapoker透明挂(德州app)wepoke透明真的吗(黑科技)好像真的有挂(有挂透明)-百度贴吧...
一分钟指导!智星德州菠萝安全(... 一分钟指导!智星德州菠萝安全(软件透明挂)外挂透明挂辅助机制(2025已更新)(微博客户端)1、首先...
aapoker辅助工具(wep... aapoker辅助工具(wepOKE)德扑软件高端(软件透明挂)总是真的有挂(有挂代打)-头条aap...
8分钟总结!来玩德州app有挂... 8分钟总结!来玩德州app有挂(黑科技)外挂透明挂辅助软件(2024已更新)(今日头条)1、游戏颠覆...
德扑之星猫腻(扑克世界app)... 德扑之星猫腻(扑克世界app)德州数据辅助器(透视挂)本来真的有挂(有挂盈利)-头条;1、首先打开扑...
6分钟解密!aapoker在哪... 6分钟解密!aapoker在哪里下载(黑科技)外挂透明挂辅助插件(2022已更新)(今日头条)1)a...
wpk有外 挂(wEpOke)... wpk有外 挂(wEpOke)governorofpoker3辅助(软件透明挂)一般真的有挂(有挂苹...