-
题目
java给你一个整数数组 nums ,其中元素已经按 升序 排列, 请你将其转换为一棵平衡二叉搜索树。 -
示例
java示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案: 示例 2: 输入:nums = [1,3] 输出:[3,1] 解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。 -
解题思路
- 利用二分查找的思想,每找到一个元素,就将其构造成一个节点。并且因为数组本身已经排序,直接构造即可。
-
代码(Java)
javaclass Solution { public TreeNode sortedArrayToBST(int[] nums) { if (nums == null) { return null; } if (nums.length == 1) { return new TreeNode(nums[0]); } return sortedArrayToBST(nums, 0, nums.length - 1, (nums.length - 1) / 2); } public TreeNode sortedArrayToBST(int[] nums, int left, int right, int mid) { if (left > right) { return null; } TreeNode root = new TreeNode(nums[mid]); root.left = sortedArrayToBST(nums, left, mid - 1, (left + mid - 1) / 2); root.right = sortedArrayToBST(nums, mid + 1, right, (mid + 1 + right) / 2); return root; } }
LeetCode108 将有序数组转换为二叉搜索树
biglxl2024-03-19 20:46
相关推荐
wabs6661 天前
关于图论【卡码网117.软件构建的思考】mifengxing1 天前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析Tongzhi20261 天前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析Wang's Blog1 天前
AI Agent白手起家30: 动态示例选择器之根据长度选择 Few Shot 示例oyguyteggytrrwwwrt1 天前
自制交叉线路识别算法手写码匠1 天前
华为云Flexus+DeepSeek征文|Dify 多智能体协同编排实战:R1 规划 + V3 执行,构建企业 Agent 团队晓天衡宇•评测社区1 天前
FSR-Bench 前沿科学推理榜单发布:GPT-5.5 居首,“会推理”未必“能答对”程序喵大人1 天前
【C++进阶】STL算法与函数对象 - 02 sort为什么需要随机访问迭代器hanlin031 天前
动态规划专练:力扣第121、122题To_OC1 天前
LC 74 搜索二维矩阵:换皮的二分查找,我居然一开始没看出来