当前位置: 首页 > news >正文

hot100_108. 将有序数组转换为二叉搜索树

hot100_108. 将有序数组转换为二叉搜索树

  • 思路

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

示例 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] 都是高度平衡二叉搜索树。

思路

二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排序的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列。

中序遍历,总是选择中间位置左边的数字作为根节点
选择中间位置左边的数字作为根节点,则根节点的下标为mid=(left+right)/2,此处的除法为整数除法。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return helper(nums,0,nums.length-1);
    }
    public TreeNode helper(int[] nums,int left,int right){
        if(left>right){
            return null;
        }
        int mid = (left + right) / 2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = helper(nums,left,mid-1);
        root.right = helper(nums,mid+1,right);
        return root;
    }
}
http://www.dtcms.com/a/34477.html

相关文章:

  • sqlclchery面对复杂的sql语句怎么办
  • Jenkins上无法查看已成功生成的Junit报告
  • 从人机环境系统智能角度看传统IP的全球化二次创作法则
  • 前端防重复请求终极方案:从Loading地狱到精准拦截的架构升级
  • 设计模式之装饰器设计模式/包装设计模式
  • 【HeadFirst系列之HeadFirstJava】第3天之从零开始理解Java中的主数据类型和引用
  • 在聚类算法的领域特定语言(DSL)中添加一个度量矩阵组件
  • 游戏开发 游戏项目介绍
  • 记录首次安装远古时代所需的运行环境成功npm install --save-dev node-sass
  • 百度首页上线 DeepSeek 入口,免费使用
  • C++常量成员函数定义与使用
  • 详细介绍STM32(32位单片机)外设应用
  • 【CVPR2024-工业异常检测】PromptAD:与只有正常样本的少样本异常检测的学习提示
  • Redisson 的 RRateLimiter 限流
  • 值和引用类型在变量赋值时的区别是什么?(C#)
  • 【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机
  • Git-速查
  • ‌挖数据平台对接DeepSeek推出一键云端部署功能:API接口驱动金融、汽车等行业智能化升级
  • 便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)
  • C#贪心算法
  • 食物照片识别卡路里(深度学习)
  • Android KMP初探
  • 每天一个Flutter开发小项目 (2) : 构建实用的待办事项列表应用
  • 最简单的随机森林的模型
  • 工程师 - VSCode的AI编码插件介绍: MarsCode
  • JavaE E基础之 Tomcat与Http (上)
  • BOOST电路设计
  • 网络安全防护指南:筑牢网络安全防线(510)
  • 网络空间安全(3)web渗透测试学习框架
  • C# 从基础神经元到实现在0~9数字识别