【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 

相关内容

热门资讯

1分钟脚本!aapoker怎么... 1分钟脚本!aapoker怎么开辅助器,aapoker怎么提高中牌率,详细教程(有挂插件)1、实时开...
两分钟作弊码!hhpoker有... 两分钟作弊码!hhpoker有没有辅助(透视脚本)详细辅助方法(其实是有挂)暗藏猫腻,小编详细说明原...
九分钟软件下载!wepoker... 九分钟软件下载!wepoker安装教程(透视底牌)详细辅助程序(确实真的有挂);1、wepoker安...
二分钟有作弊!wpk辅助器是真... 二分钟有作弊!wpk辅助器是真的吗(透视辅助)详细辅助挂(好像真的是有挂);1、起透看视 wpk辅助...
八分钟插件!aapoker透视... 八分钟插件!aapoker透视脚本(透视脚本)详细辅助挂(竟然真的是有挂)aapoker透视脚本辅助...
九分钟德州透视!hhpoker... 九分钟德州透视!hhpoker透视脚本下载,hhpoker的辅助是真的吗,详细教程(有挂技巧)1、该...
9分钟免费app!wepoke... 9分钟免费app!wepokerplus脚本,wepoker辅助插件功能,详细教程(有挂智能)1、w...
十分钟私人局辅助!wpk真的有... 十分钟私人局辅助!wpk真的有透视嘛(透视辅助)详细辅助app(都是存在有挂)1、玩家可以在软件透明...
2分钟安全!aapoker辅助... 2分钟安全!aapoker辅助器怎么用,aapoker脚本怎么用,详细教程(有挂细节)1、超多福利:...
5分钟外挂靠谱!hhpoker... 5分钟外挂靠谱!hhpoker辅助软件下载,hhpoker真的假的,详细教程(有挂规律)1、每一步都...