109. 有序链表转换二叉搜索树

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例:

给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:0/ \-3   9/   /-10  5
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; next = null; }* }*/
/*** Definition for binary tree* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
public class Solution {public TreeNode sortedListToBST(ListNode head) {if (head == null) {return null;}int end = 0;ListNode it = head;while(it.next != null) {it = it.next;end = end +1;}return build(head,0,end);}public TreeNode build(ListNode head,int start,int end) {if (start > end) {return null;}
//        if (start == end) {
//            return new TreeNode(head.val);
//        }//mid取值注意,测试用例不是按常规mid取值的,加不加以都是对的int mid = start + (end-start+1)/2;ListNode midNode = head;for (int i=start;i<mid;i++) {midNode = midNode.next;}TreeNode treeNode= new TreeNode(midNode.val);treeNode.left = build(head,start,mid-1);treeNode.right = build(midNode.next,mid+1,end);return treeNode;}
}

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

(1过)

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例:

给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:0/ \-3   9/   /-10  5
public class ConvertSortedArrayToBinarySearchTree {public TreeNode sortedArrayToBST(int[] num) {if (num == null || num.length <=0) {return null;}return helper(num,0,num.length-1);}public TreeNode helper(int[] num,int start, int end) {if (start > end) {return null;}int mid = start + (end-start+1)/2;TreeNode node = new TreeNode(num[mid]);node.left = helper(num,start,mid - 1);node.right = helper(num,mid+1,end);return node;}
}

转载于:https://www.cnblogs.com/twoheads/p/10565362.html

[leetcode-108,109] 将有序数组转换为二叉搜索树相关推荐

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

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

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

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

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

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

  4. ★LeetCode(108)——将有序数组转换为二叉搜索树(JavaScript)

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

  5. LeetCode实战:将有序数组转换为二叉搜索树

    题目英文 Given an array where elements are sorted in ascending order, convert it to a height balanced BS ...

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

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

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

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

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

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

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

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

最新文章

  1. 【数据清洗】yolo标注补全 生成空的标注txt文件
  2. mysql dump gtid_mysqldump导出数据备份 --set-gtid-purged=OFF
  3. 远程连接——Win连接远程Linux的软件
  4. 1.5编程基础之循环控制 26 统计满足条件的4位数个数 python
  5. 深度学习人体姿态估计:2014-2020全面调研
  6. 制造业数字化转型的困难_智能制造如何助力企业转型升级?百家制造业企业共谋数字化转型路...
  7. IPSec隧道配置案例(手动模式)
  8. Fortran与C/C++混合编程示例
  9. decimal简单问题
  10. java高级学习视频下载
  11. vue项目结构文件介绍及项目运行流程
  12. 利用python进行数据分析~基金分析
  13. 【LeetCode - 247】中心对称数 II
  14. Serverless 应用引擎 SAE 携手谱尼测试共同抗疫
  15. 诗与远方:无题(九十四)
  16. metrics 指标分析——你不在意的p99和p999
  17. 移远EC20--1 AT命令初始2
  18. POJ 3265 Problem Solving 动态规划
  19. 技能高考c语言经典试题及答案,技能练习题
  20. Prodigal基因预测

热门文章

  1. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」
  2. @RequestMapping
  3. 配置gitlab通过smtp发送邮件
  4. 【BZOJ2300】[HAOI2011]防线修建 set维护凸包
  5. Eclipse快捷键以及设置
  6. 有感软件安装称呼的变化
  7. matplotlib plt.plot
  8. 批量获取服务器cpu信息,获取服务器的cpu利用率
  9. windows系统服务器添加ssl证书
  10. 机器学习从入门到精通50讲(一)-大数据平台下的数据质量管理