[JavaScript 刷题] 树 - 将有序数组转换为二叉搜索树, leetcode 108
[JavaScript 刷题] 树 - 将有序数组转换为二叉搜索树, leetcode 108
github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。
题目地址:108. Convert Sorted Array to Binary Search Tree
题目
如下:
Given an integer array
nums
where the elements are sorted in ascending order, convert it to a height-balanced binary search tree.A height-balanced binary tree is a binary tree in which the depth of the two subtrees of every node never differs by more than one.
解题思路
其实参考一下数组以及图:
[-10,-3,0,5,9]
就会发现几个规律:
- 数组的最左数值一定是二叉树的最左侧节点
- 数组的最右数值一定是二叉树的最大侧节点
- 数组的最中间数值一定是二叉树的根节点
这个解题方法就会利用第三个特性去实现:
每次过程中都找到最中间的结点,将其设置为 root
以该图为例,第一个 root 就是 0
将
[0, ..., mid)
的部分设置为 root 的左子树root 的左子树为
[-10, -3]
,这个部分递归地调用函数去解决也就是说,
[-10, -3]
这部分会带入sortedArrayToBST
函数中,进行下一步的操作,即找到中点(3),将其设为 root,左子树为-10
最后再调用
sortedArrayToBST
进行递归,此时只有一个值-10
这个时候再次调用
sortedArrayToBST
进行递归就会进入 base case:if (!nums.length) return null;
。递归结束,-10
的左右子树均为 null,这时候再返回上一个 call stack,将-10
作为-3
的左子树,如此往复将
(mid, ..., nums.length)
部分设置为 root 的右子树root 的右子树为
[5, 9]
,这个部分递归地调用函数去解决其递归调用也是同样的道理
使用 JavaScript 解题
var sortedArrayToBST = function (nums) {if (!nums.length) return null;const mid = Math.floor(nums.length / 2);const root = new TreeNode(nums[mid]);root.left = sortedArrayToBST(nums.slice(0, mid));root.right = sortedArrayToBST(nums.slice(mid + 1, nums.length));return root;
};
[JavaScript 刷题] 树 - 将有序数组转换为二叉搜索树, leetcode 108相关推荐
- [Leetcode][第108题][JAVA][将有序数组转换为二叉搜索树][二分法][递归]
[问题描述][简单] 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树.本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1.示例:给定有序数组: [- ...
- laravel数组转换为字符串_LeetCode刷题实战108:将有序数组转换为二叉搜索树
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- leetcode刷题记录--数据结构;深度优先搜索算法;二叉树;平衡树;1020. 飞地的数量;1669. 合并两个链表;108. 将有序数组转换为二叉搜索树
1020. 飞地的数量 难度中等131 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格.1 表示一个陆地单元格. 一次 移动 是指从一个陆地单元格走到另一个相邻(上 ...
- 数据结构与算法--力扣108题将有序数组转换为二叉搜索树
力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...
- 将字符串转换为数组_LeetCode 树 108.将有序数组转换为二叉搜索树
7(108) 将有序数组转换为二叉搜索树 描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 ...
- Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...
- 20200703:将有序数组转换为二叉搜索树(leetcode108)
将有序数组转换为二叉搜索树 题目 思路与算法 代码实现 复杂度分析 题目 将有序数组转换为二叉搜索树 思路与算法 乍一看很简单,实际也很简单,今天的动态规划没做出来,就刷每日一题好了.保证平衡的最简单 ...
- [leetcode-108,109] 将有序数组转换为二叉搜索树
109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...
- 20190917:(leetcode习题)将有序数组转换为二叉搜索树
将有序数组转换为二叉搜索树 题目 大致思路 代码实现 题目 大致思路 将有序数组转换为二叉平衡树,即左边的数和右边数的差值不超过1,那么root节点应该为正中间的数,然后左边的剩余的中间为root.l ...
- LeetCode(Python)—— 将有序数组转换为二叉搜索树(简单)
将有序数组转换为二叉搜索树 概述:给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树.高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 ...
最新文章
- bootstrap:按钮,下拉菜单
- [解决]eclipse中android自动补全/提示卡机或假死
- 深度学习100例-卷积神经网络(LeNet-5)深度学习里的“Hello Word” | 第22天
- 音高和基频(Pitch and F0)
- Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器绑定)
- java向注册表单传递数据php_PHP提交from表单的方法
- 大数据 vr csdn_VR中的数据可视化如何革命化科学
- SGU---104 DP
- 官方示例之地球模块五:ThingLayer
- html字体样式美化,css美化文字做法详解总结
- iphone计算机同样答案,学会这4招,iPhone搭配Windows电脑一样好用
- [深度学习 - 实战项目] yoloV5人脸侦测arcFace人脸识别silentFace静态活体检测
- Spring Data JPA进阶(三):Specification查询
- centos7 配置phpAdmin
- spring mongodb内嵌文档查询
- 在腾讯,我们如何做 Code Review
- java根据word模板导出_java如何根据word模板生成word文档
- 【时间序列】时间序列曲线平滑+预测(LSTM)
- Linux系统的下载神器XDM
- matlab中画出3d船舶,船舶运动仿真中航迹与船形图的应用(上)
热门文章
- 《结构思考力》如何把200ml的水倒入100ml的杯子里?
- 诗词乱拼 zz from smth.org
- Sql学习第三天——SQL关于with ties
- contest3 CF994 div2 ooxxx? oooox? ooooo?
- 强烈推荐:C#编码规范手册
- 小技巧(1):Ububtu18.04中.z01 .z02 .z03此类拆分后压缩文件解压缩办法(以及常用解分卷压缩方法)
- 【加拿大留学】蒙特利尔中国公派学者 学生学习生活指南【蒙特利尔留学必看,第一次出国必看】
- [GIS原理] 9.1 数字高程模型DEM-特征 | 分类 | 构建 | 数据结构 | 空间内插 | DEM的未来
- PS钢笔--制图抠图
- java将mp4转换成m3u8