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

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

示例 1:

输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

方法一:
递归,从数组的中间元素(满足平衡二叉树)开始进行递归构建二叉树,按照中序遍历的顺序进行构建。

代码:

class Solution {public TreeNode sortedArrayToBST(int[] nums) {// 递归构建二叉树 从数组的中间节点开始(为了构建平衡二叉搜索树)return helper(nums, 0, nums.length - 1);}TreeNode helper(int[] nums, int l, int r) {if (l > r) return null;int mid = l + (r - l) / 2; // 得到中间的节点TreeNode head = new TreeNode(nums[mid]);head.left = helper(nums, l, mid - 1);head.right = helper(nums, mid + 1, r);return head;}
}

时间复杂度:O(lgn)
空间复杂度:O(n) 存储所有元素

108. 将有序数组转换为二叉搜索树相关推荐

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

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

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

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

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

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

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

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

  5. 108. 将有序数组转换为二叉搜索树(二分+搜索)

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

  6. leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)

    题目 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题解 经典二分,不解释了,直接看代码 /*** ...

  7. 【leetcode】108. 将有序数组转换为二叉搜索树

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

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

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

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

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

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

最新文章

  1. 把ACL论文「几乎一字不落」抄到AAAI 2021上,作者回应:属借鉴
  2. sudoers配置文件详解
  3. [转载]实际举例C#引用类型和值类型的区别
  4. 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转
  5. python 获取系统相关编码的函数
  6. SQL Server 中的case when then else 中的结果类型
  7. python内存管理错误的是_解读Python内存管理机制(转载)
  8. 【面试虐菜】—— MongoDB知识整理
  9. ubuntu 下 升级 nginx
  10. Java join()原理分析
  11. 知道域名差服务器系统,对DNS域名系统的抓包分析
  12. python反编译命令_Python 反编译模块dis
  13. 创建JSON集合使用JSONArray.fromObject 转化后得到的jsonArray集为空?
  14. dojo省份地市级联之地市封装类(二)
  15. ios刷机固件下载网址
  16. 锐捷文件描述错误linux,ubuntu下使用锐捷客户端连接校园网-郑州大学Ruijieclient for Linux下载及配置指导...
  17. Xcelsius调用CR报表,总是弹出输入参数页面
  18. MapReduce学习笔记(二)——Mapper、Reducer和Driver
  19. PDF文件怎么加密?这两种加密方法很靠谱
  20. cadence软件初识

热门文章

  1. html脚注制作,幸福西饼:静态页面制作项目总结
  2. Codeforces Gym 100015H Hidden Code(暴力)
  3. 取次花丛懒回顾,半缘修道半缘君。
  4. 【CODE】Longest Substring Without Repeating Characters
  5. 在matlab设置三角波,matlab 中repeating sequence中怎样设置20khz三角波
  6. web_0207_1
  7. 小程序获取附近IBeacon设备
  8. java多文件生成zip_如何在java中创建多部分压缩zip文件
  9. 新人上路,以菜鸟之名,对现在已学以及将来要学的进行一个简单的梳理,希望多多指教
  10. PJSIP视频通话客户端