【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 

相关内容

热门资讯

透视辅助!闲娱江西辅助器(辅助... 透视辅助!闲娱江西辅助器(辅助挂)确实真的有挂(详细辅助2025新版总结);闲娱江西辅助器辅助器中分...
红龙poker脚本!wepok... 红龙poker脚本!wepoker能不能透视(透视)确实有挂(AI教程)wepoker能不能透视辅助...
透视有挂!aapkoer德州辅... 透视有挂!aapkoer德州辅助挂下载,aapoker辅助工具存在吗,第三方教程(有挂黑科技)1、金...
透视辅助!微信小程序游戏充值破... 透视辅助!微信小程序游戏充值破解(辅助挂)果然是真的有挂(详细辅助系统教程)1、许多玩家不知道微信小...
wpk脚本辅助器!有哪些免费的... wpk脚本辅助器!有哪些免费的wpk作弊码(透视)总是真的有挂(线上教程)1、进入到有哪些免费的wp...
透视规律!wepoker辅助器... 透视规律!wepoker辅助器是真的的吗,wepoker透视底牌脚本,普及教程(有挂介绍)1、wep...
透视辅助!福麻圈辅助器(辅助挂... 透视辅助!福麻圈辅助器(辅助挂)真是有挂(详细辅助总结教程);1、福麻圈辅助器ai辅助优化,福麻圈辅...
红龙poker辅助!约局吧辅助... 红龙poker辅助!约局吧辅助器(透视)原来是有挂(第三方教程)1、约局吧辅助器系统规律教程、约局吧...
透视代打!aapoker免费透... 透视代打!aapoker免费透视脚本,wepoker脚本下载,透明挂教程(有挂介绍)1、进入到aap...
wpk辅助购买!德州私人局怎么... 您好,德州私人局怎么透视这款游戏可以开挂的,确实是有挂的,需要了解加去Q群【1067239143】很...