leetcode108.把升序数组转换成二叉搜索树

devtools/2024/11/12 0:32:40/

题目描述

[-10,-3,0,5,9] 转换成如下二叉搜索树:

解题的核心原理是:二叉搜索树的中序遍历结果是一个升序数组,所以根节点的数值,也位于数组的中部。

class Solution {public TreeNode sortedArrayToBST(int[] nums) {return helper(nums, 0, nums.length - 1); //递归}//nums={-10,-3,0,5,9}public TreeNode helper(int[] nums, int left, int right) { //开始结点大于尾结点,返回null,这个null在后续的递归中,其实是叶子结点。if (left > right) {  //比如left是0,right是mid-1=-1//叶子结点是nullreturn null;} // 总是选择中间位置左边的数字作为根节点int mid = (left + right) / 2; //mid=(0+4)/2=2//初始化二叉搜索树的根结点,最终返回这个根节点TreeNode root = new TreeNode(nums[mid]);         //helper(nums,0,1)-> root.left是-10//左侧的值都比根节点要小//mid-1是这行代码的关键root.left = helper(nums, left, mid - 1); //helper(nums,3,4)-> root.right是5//右侧的值都比根节点要大root.right = helper(nums, mid + 1, right);return root; //返回二叉搜索树的根节点}
}

执行过程:

nums={-10,-3,0,5,9}
helper(nums,0,4)
mid=2   nums[2]=0 root=0
root.left=helper(nums,0,1)==>( mid=0  nums[0]=-10 root=-10 root.left=helper(nums,0,-1)=null root.right=(nums,1,1) ==> (mid=1, root=nums[1]=-3,root.left=helper(nums,1,0)=null  root.right=helper(nums,2,1)=null))root.right=helper(nums,3,4)==>(left=3,right=4,mid=(3+4)/2=3 nums[3]=4  root=4root.left = helper(nums,3,2)=nullroot.right = helper(nums,4,4)==>{  left=4, right=4,mid=4,root=nums[4]=9root.left=helper(nums,4,3)=nullroot.right=helper(nums,5,4)=null}	
)

http://www.ppmy.cn/devtools/97366.html

相关文章

设计模式实战:数据分析系统的设计与实现

在数据驱动的业务环境中,数据分析系统是决策支持的核心工具。为了构建一个高效、灵活的数据分析系统,我们可以结合多种设计模式,如策略模式、装饰模式和模板方法模式。本文将详细介绍这些模式在数据分析系统中的应用,帮助开发者设计出可扩展且易于维护的系统。 系统设计流…

【TCP】核心机制:延时应答、捎带应答和面向字节流

文章目录 延时应答捎带应答面向字节流粘包问题方案一:指定分隔符方案二:指定数据的长度 TCP 报头首部长度保留(6 位)选项序号确认序号 延时应答 尽可能降低可靠传输带来的性能影响 提升性能>让滑动窗口变大 如果我们立即返回 …

05--kubernetes组件与安装

前言:终于写到kubernetes(k8s),容器编排工具不止k8s一个,它的优势在于搭建集群,也是传统运维和云计算运维的第一道门槛,这里会列出两种安装方式,详细步骤会在下文列出,文…

docker部署LNMP

docker部署LNMP nginx 1.22 172.111.0.10 docker-nginx mysql 8.0.30 172.111.0.20 docker-mysql php 8.1.27 172.111.0.30 docker-php docker:单节点部署,只能在一台机器上部署,如果跨机器容器无法操作,无法通信。 做高可用…

Python实现GAN(生成对抗网络)图像修复算法

目录 1. GAN简介与图像修复2. PyTorch和CUDA简介3. 数据加载与预处理3.1 安装依赖3.2 数据加载3.3 数据遮挡4. 构建GAN图像修复模型4.1 生成器4.2 判别器5. 训练GAN模型5.1 损失函数与优化器5.2 训练循环6. 测7. 实现GUI进行图像修复8. 总结与扩展扩展方向:1. GAN简介与图像修…

低代码开发平台:技术概览、效率与质量的权衡及挑战与机遇

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 一、技术概览 基本概念 主要特点 市场现状 主流平台优缺点分析 二、效率与质量的权衡 提高…

SQL基础——MySQL的触发器、存储引擎、事务

简介:个人学习分享,如有错误,欢迎批评指正。 一、MySQL的触发器 1.概述 介绍 触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用&…

人类意识云端备份,未来或下载至机器人重生!

在数字化浪潮的推动下,人工智能(AI)正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展,捕捉行业动态;提供深入的新闻解读,助您洞悉技术背后的逻辑;汇聚行业专家的见解,…