[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]

就会发现几个规律:

  • 数组的最左数值一定是二叉树的最左侧节点
  • 数组的最右数值一定是二叉树的最大侧节点
  • 数组的最中间数值一定是二叉树的根节点

这个解题方法就会利用第三个特性去实现:

  1. 每次过程中都找到最中间的结点,将其设置为 root

    以该图为例,第一个 root 就是 0

  2. [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 的左子树,如此往复

  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相关推荐

  1. [Leetcode][第108题][JAVA][将有序数组转换为二叉搜索树][二分法][递归]

    [问题描述][简单] 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树.本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1.示例:给定有序数组: [- ...

  2. laravel数组转换为字符串_LeetCode刷题实战108:将有序数组转换为二叉搜索树

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. leetcode刷题记录--数据结构;深度优先搜索算法;二叉树;平衡树;1020. 飞地的数量;1669. 合并两个链表;108. 将有序数组转换为二叉搜索树

    1020. 飞地的数量 难度中等131 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格.1 表示一个陆地单元格. 一次 移动 是指从一个陆地单元格走到另一个相邻(上 ...

  4. 数据结构与算法--力扣108题将有序数组转换为二叉搜索树

    力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...

  5. 将字符串转换为数组_LeetCode 树 108.将有序数组转换为二叉搜索树

    7(108) 将有序数组转换为二叉搜索树 描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 ...

  6. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

    669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...

  7. 20200703:将有序数组转换为二叉搜索树(leetcode108)

    将有序数组转换为二叉搜索树 题目 思路与算法 代码实现 复杂度分析 题目 将有序数组转换为二叉搜索树 思路与算法 乍一看很简单,实际也很简单,今天的动态规划没做出来,就刷每日一题好了.保证平衡的最简单 ...

  8. [leetcode-108,109] 将有序数组转换为二叉搜索树

    109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...

  9. 20190917:(leetcode习题)将有序数组转换为二叉搜索树

    将有序数组转换为二叉搜索树 题目 大致思路 代码实现 题目 大致思路 将有序数组转换为二叉平衡树,即左边的数和右边数的差值不超过1,那么root节点应该为正中间的数,然后左边的剩余的中间为root.l ...

  10. LeetCode(Python)—— 将有序数组转换为二叉搜索树(简单)

    将有序数组转换为二叉搜索树 概述:给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树.高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 ...

最新文章

  1. bootstrap:按钮,下拉菜单
  2. [解决]eclipse中android自动补全/提示卡机或假死
  3. 深度学习100例-卷积神经网络(LeNet-5)深度学习里的“Hello Word” | 第22天
  4. 音高和基频(Pitch and F0)
  5. Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器绑定)
  6. java向注册表单传递数据php_PHP提交from表单的方法
  7. 大数据 vr csdn_VR中的数据可视化如何革命化科学
  8. SGU---104 DP
  9. 官方示例之地球模块五:ThingLayer
  10. html字体样式美化,css美化文字做法详解总结
  11. iphone计算机同样答案,学会这4招,iPhone搭配Windows电脑一样好用
  12. [深度学习 - 实战项目] yoloV5人脸侦测arcFace人脸识别silentFace静态活体检测
  13. Spring Data JPA进阶(三):Specification查询
  14. centos7 配置phpAdmin
  15. spring mongodb内嵌文档查询
  16. 在腾讯,我们如何做 Code Review
  17. java根据word模板导出_java如何根据word模板生成word文档
  18. 【时间序列】时间序列曲线平滑+预测(LSTM)
  19. Linux系统的下载神器XDM
  20. matlab中画出3d船舶,船舶运动仿真中航迹与船形图的应用(上)

热门文章

  1. 《结构思考力》如何把200ml的水倒入100ml的杯子里?
  2. 诗词乱拼 zz from smth.org
  3. Sql学习第三天——SQL关于with ties
  4. contest3 CF994 div2 ooxxx? oooox? ooooo?
  5. 强烈推荐:C#编码规范手册
  6. 小技巧(1):Ububtu18.04中.z01 .z02 .z03此类拆分后压缩文件解压缩办法(以及常用解分卷压缩方法)
  7. 【加拿大留学】蒙特利尔中国公派学者 学生学习生活指南【蒙特利尔留学必看,第一次出国必看】
  8. [GIS原理] 9.1 数字高程模型DEM-特征 | 分类 | 构建 | 数据结构 | 空间内插 | DEM的未来
  9. PS钢笔--制图抠图
  10. java将mp4转换成m3u8