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

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

题目描述

[-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.lryc.cn/news/428347.html

相关文章:

  • 用QTdesigner制作自己的双目标定软件
  • MySQL:基础巩固-DDL
  • 翻译软件在医学中的应用
  • 政务大数据解决方案(六)
  • 【MATLAB机器人系统工具箱】【manipulatorRRT规划器】属性和方法解析
  • MySQL 多表连接(JOIN)
  • Opencv学习-直方图比较
  • 一文入门:正则表达式基础
  • 深入理解 `@DateTimeFormat` 和 `@JsonFormat` 注解
  • 微服务架构设计中的常见的10种设计模式
  • stripe Element 如何使用
  • vue3动态引入图片不显示问题
  • 【流媒体】RTMPDump—AMF编码
  • Mysql双主双从
  • 安卓主板_MTK联发科主板定制开发|PCBA定制开发
  • 结合GPT与Python实现端口检测工具(含多线程)
  • 数字媒体产业发展现状剖析,洞悉数字产业园的创新之举
  • PDF文件转换为HTML文件
  • 简易版PHP软文发稿开源系统
  • React.createContext 的 多种使用方法 详细实现方案代码
  • 计算机网络之IPv4深度解析
  • TinyGPT-V:微型视觉语言模型【VLM】
  • pytorch自动微分
  • TCP协议为什么是三次握手和四次挥手
  • 利用ChatGPT提升学术论文撰写效率:从文献搜集到综述撰写的全面指南
  • 智能、高效、安全,企业桌面软件管理系统,赋能企业数字化转型!提升工作效率不是梦!
  • 第N7周:调用Gensim库训练Word2Vec模型
  • 基于Crontab调度,实现Linux下的定时任务执行。
  • Centos系统中创建定时器完成定时任务
  • WLAN基础知识(1)