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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言大数相加怎么写,大数相加

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include /**** 定义双向节点* 数据区为一个整型数字***/struct Node {int number;//数据区&#xff0c;仅一个数字&#xff0c;保存一位数字struct Node * next;struct Node * prev;};typedef struct Node Node;/*** 创建…

苹果深度学习核心“神经引擎”方向性介绍

https://www.chiphell.com/thread-1785739-1-1.html转载于:https://www.cnblogs.com/eustoma/p/9858410.html

骆驼中的事件处理

在上一篇有关骆驼-小水车的帖子中&#xff0c;我介绍了骆驼-小水车的组件&#xff0c;并使用骆驼路线中的规则实现了一些简单的面向任务的过程。 今天&#xff0c;我将展示如何通过添加事件处理来扩展此示例。 那么如何描述一个事件呢&#xff1f; 每个事件在某个时间发生并持…

值得拥有!精心推荐几款超实用的 CSS 开发工具

当你开发一个网站或 Web 应用程序的时候&#xff0c;有合适的工具&#xff0c;绝对可以帮助您节省大量的时间。在这篇文章中&#xff0c;我为大家收集了超有用的 CSS 开发工具。 对于 Web 开发人员来说&#xff0c;找到有用的 CSS 开发工具&#xff0c;就像找到一个魔灯&#x…

matplotlib散点图笔记

定义: 由一组不连续的点完成的图形 散点图: 包含正相关性,负相关性和不相关性. 散点图生成函数: plt.scatter(x,y) 演示代码如下: import numpy as np import matplotlib.pyplot as plt open,closenp.loadtxt(‘000001.txt’,delimiter’,’,skiprows1,usecols(1,4),unpackTrue…

c语言循环嵌套do do while while结构例子,讲解C++的do while循环和循环语句的嵌套使用方法...

用do-while语句构成循环do-while语句的特点是先执行循环体&#xff0c;然后判断循环条件是否成立。其一般形式为&#xff1a;do语句while (表达式);它是这样执行的&#xff1a;先执行一次指定的语句(即循环体)&#xff0c;然后判别表达式&#xff0c;当表达式的值为非零(“真”…

nlog官方帮助_Nlog日志组件简介

NLog简介NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net&#xff0c;配置方式非常简单。支持多种形式输出日志:文本文件、系统日志、数据库、控制台、邮箱等1.NLog简介在nuget控制台输入安装nlog命令: Install-Package NLog.ConfigNlog配置的方式常用的有两…

怎样在体制内培养出离开体制的能力

你要有随时可以离开而且离开以后比现在过得更好的能力。 这句看似励志的废话&#xff0c;正如告诉一个穷人&#xff0c;你要有随时能够赚钱而且保持财富自由的能力。 这谈何容易呢&#xff1f; 不下到游泳池里怎么能学会游泳。 不离开体制&#xff0c;你离开体制的能力从何培养…

Java 8:开发人员怎么看?

由于Java 8发行倒计时已经开始&#xff0c;因此Java开发人员似乎肯定已经准备好参与其中。 根据Typesafe的一项调查 &#xff0c;参与其中的开发人员中有65&#xff05;回答说他们将在24个月的计划中迁移到Java 8&#xff0c;而从中有30&#xff05;的开发者将在接下来的6个月中…

比较好的一些 ConcurrentHashMap讲解博客

jdk8 https://blog.csdn.net/jianghuxiaojin/article/details/52006118#commentBox jdk7、8 https://crossoverjie.top/2018/07/23/java-senior/ConcurrentHashMap/ jdk7 http://www.yuanrengu.com/index.php/2017-01-17.html 转载于:https://www.cnblogs.com/Draymonder/p/105…

20款漂亮的长阴影 LOGO 设计作品【附免费生成工具】

长阴影&#xff08;Long Shadow&#xff09;概念来自于最新非常流行的扁平化设计&#xff08;Flat Design&#xff09;。扁平化设计趋势影响最大的是用户界面元素和图标&#xff0c;但它也开始蔓延到其他网页设计的其他部分。 长阴影其实就是扩展了对象的投影&#xff0c;感觉是…

c语言sqlist结构体,c语言里 sqlist

满意答案cielkong2018.08.12采纳率&#xff1a;43% 等级&#xff1a;9已帮助&#xff1a;463人c语言里 sqlist&#xff1f;//定义顺序表L的结构体typedef struct{Elemtype data[MaxSize]&#xff1b;int length;}SqList;//建立顺序表void CreateList(SqList * &L,ElemTy…

汇编语言实验三

1. 练习1 第1步&#xff0c;编写汇编源程序t1.asm, 源程序代码如图1-1所示。 (1) 运行程序&#xff0c;观察程序输出结果是什么&#xff1f; 2) 将 line4和line9种寄存器dl 的值分别修改为 0~9 中任何一个数字&#xff0c;重新汇编→ 连接→运行&#xff0c;观察结果的变化。 …

android dp转px的公式_公式px到dp,dp到px android

注意&#xff1a;上面广泛使用的解决方案基于displayMetrics.density。但是&#xff0c;文档解释说这个值是一个舍入值&#xff0c;与屏幕“桶”一起使用。例如。在我的Nexus 10上&#xff0c;它返回2&#xff0c;其中实际值为298dpi(实际)/ 160dpi(默认值) 1.8625。根据您的要…

Java事实让您大吃一惊! (信息图)

随着Java 8计划在未来几天内发布 &#xff0c;我们正在寻找一些Java事实&#xff0c;这些事实将真正捕捉这种编程语言对世界的影响。 因此&#xff0c;我们决定创建一个简单的图表&#xff0c;描述有关Java历史的一些重要统计数据。 信息的主要来源是Oracle的Java时间轴 。 我…

多线程爬取新闻标题和链接

新闻分页地址&#xff1a;https://news.cnblogs.com/n/page/10/&#xff1b;url中最后一个数字代表页码 from concurrent.futures import ThreadPoolExecutor import threading import time from queue import Queue import logging import requests from bs4 import Beautiful…

15个创意示例教您如何自定义 404 错误页面

在这篇文章中&#xff0c;你会看到一组充满创意的404错误页面设计。我希望这个集合能够启发和帮助你设计自己的 404 错误页面。一个自定义的404错误页面将鼓励用户在您的网站上停留更长的时间。 404页面必须让访客容易理解&#xff0c;最好有有一些互动。你会看到下面的例子中一…

C语言反序输出英文句子,C++实现英文句子中的单词逆序输出的方法

本文实例讲述了C实现英文句子中的单词逆序输出的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;#include "stdafx.h"#include #include #include using namespace std;int main(int arc,char** argv){string str"I come from liaoning.";sta…

r语言转化为python_数值型与字符型转换总结|R语言

在日常碰到问题时出现当前“数据类型不能进行操作”的提示时还是有些脑壳疼&#xff0c;所以这次整理了针对R数据类型转换的总结。理论部分主要是R for Data Science的向量节选翻译、《R语言实战》第二章2.2创建数据结构、《R in a Nutshell》以及猴子老师的向量ppt。————文…

input 输入值的监听 禁止输入特殊字符

1.input 输入值的监听 //用于监听input的值变化&#xff08;input的值产生变化才会触发事件&#xff09;(function ($) {$.fn.watch function (callback) {return this.each(function () {//缓存以前的值 $.data(this, originVal, $(this).val());//event $(this).on(keyu…