[Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]

【问题描述】[中等]

【解答思路】

在这里插入图片描述

1. 分治 快慢指针

在这里插入图片描述

复杂度
在这里插入图片描述

class Solution {public TreeNode sortedListToBST(ListNode head) {return buildTree(head, null);}public TreeNode buildTree(ListNode left, ListNode right) {if (left == right) {return null;}ListNode mid = getMedian(left, right);TreeNode root = new TreeNode(mid.val);root.left = buildTree(left, mid);root.right = buildTree(mid.next, right);return root;}public ListNode getMedian(ListNode left, ListNode right) {ListNode fast = left;ListNode slow = left;while (fast != right && fast.next != right) {fast = fast.next;fast = fast.next;slow = slow.next;}return slow;}
}
2. 分治 + 中序遍历优化

在这里插入图片描述

复杂度

在这里插入图片描述

class Solution {ListNode globalHead;public TreeNode sortedListToBST(ListNode head) {globalHead = head;int length = getLength(head);return buildTree(0, length - 1);}public int getLength(ListNode head) {int ret = 0;while (head != null) {++ret;head = head.next;}return ret;}public TreeNode buildTree(int left, int right) {if (left > right) {return null;}int mid = (left + right + 1) / 2;TreeNode root = new TreeNode();root.left = buildTree(left, mid - 1);root.val = globalHead.val;globalHead = globalHead.next;root.right = buildTree(mid + 1, right);return root;}
}

在这里插入图片描述

【总结】

1. 前中后序遍历变化的是[中]的位置,左到右的顺序不改变

前序遍历 中左右
中序遍历 左中右
后续遍历 左右中

2.二叉搜索树 关键 找到中位数
3.相关题目

[Leetcode][第108题][JAVA][将有序数组转换为二叉搜索树][二分法][递归]
转载链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/solution/you-xu-lian-biao-zhuan-huan-er-cha-sou-suo-shu-1-3/

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

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

相关文章

第四十六期:关于云存储的五大优势

5G时代,越来越多的企业开始选择在云上存储数据,对于IT部门来说,了解云存储的优势是很有必要的。今天给大家介绍云存储的五大优势,以及它们如何帮助用户解决一些常见IT问题。 1、可扩展性 传统存储系统以及横向扩展增加的节点&…

leetcode之回溯backtracing专题5

参考链接 http://blog.csdn.net/zhongkeli/article/details/6966805 https://leetcode.com/problems/permutation-sequence/#/description

第四十七期:毕业3年Java程序员,年薪20W,他是如何达到的?

Java架构师,首先要是一个高级java攻城狮,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池…… Java架构师&…

【数据结构与算法】散列表

一、散列表的由来? 1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。 2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列…

第八章方差分析以及线性回归(1)

方差分析 方差分析是由英国统计学家Fisher在20世纪20年代提出的。  方差分析的目的是推断两个或者两个以上的总体均值是否有差异的显著性检验。 单因素方差分析 例子 保险公司为了了解某一险种在4个不同地区索赔额情况是否存在差异。收集了四个地区一年的索赔额记录。这四个…

react树状组件

最近在react项目中需要一个树状组件,但是又不想因为这个去引入一套UI组件,故自己封装了一个基于react的树状组件, 个人认为比较难得部分在于数据的处理,话不多说直接上代码: 下面是tree.js import React, {Component} …

第四十八期:只因写了一段爬虫,公司200多人被抓!

刚从朋友听到这个消息的时候,我有点不太相信,做为一名程序员来讲,谁还没有写过几段爬虫呢?只因写爬虫程序就被端有点夸张了吧。 作者:纯洁的微笑|2019-10-17 09:51 “一个程序员写了个爬虫程序,整个公司20…

[Leetcode][第647题][JAVA][回文子串][动态规划][中心扩展][Manacher 算法]

【问题描述】[中等] 【解答思路】 1. 暴力 首先明确如何判断一个字符串是否为回文字符串。第一个字符与最后一个字符相同,第二个字符与倒数第二个字符相同…关于中心位置轴对称。 本题要求一共有多少个回文子串,那么就需要判断,索引[i, j]的…

66-加一

给定表示非负整数的非空数字数组,加上整数的1。 存储数字使得最高有效数字位于列表的开头,并且数组中的每个元素包含单个数字。 您可以假设整数不包含任何前导零,除了数字0本身 例1: 输入: [1,2,3] 输出: […

玩转oracle 11g(52):Oracle导出导入表(.sql、.dmp文件)两种方法

提示:在导入sql和dmp文件之前,先建立用户,指明表空间。其中要注意用户名和表空间最好跟sql文件中的一样。 方法一:.sql文件的导出与导入 导出步骤 使用PL/SQL Developer登录你需要备份的数据库;选择工具->导出用…

第八章方差分析以及线性回归(2)

一元线性回归 变量间的关系 变量与变量之间的关系分为确定性关系和相关性关系。  确定性关系是指当自变量给定一个值的时候,就能计算出应变量的值。例如物体下落高度h与下落时间t的关系:h12gt2。  相关性关系是指变量之间的关系不确定,表…

Creating a Pulsing Circle Animation

Creating a Pulsing Circle Animation 原文 https://www.kirupa.com/animations/creating_pulsing_circle_animation.htm Outside of transitions that animate between states, we dont see a whole lot of actual animation in the many UIs we interact with. We dont have …

第四十九期:化繁为简的五种码农必备工具

如今,开发工具已成为了软件开发过程中必不可少的组成部分。本文将向您介绍当前软件开发市场上颇具影响力的五种化繁为简的码农必备工具。 不知您是否已经发现:那些以任务为中心的软件开发工作,会比独立的研究式开发复杂得多。针对软件产品的开…

【数据结构与算法】哈希算法

一、什么是哈希算法? 1.定义 将任意长度的二进制值串映射成固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。 2.如何设计一个优秀的哈希算法? ①单向哈希: 从哈…

自然语言处理与文本检索

今天开始把翟成祥教授的文本检索课程做一下笔记。 说明:文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译,是我对课程的理解。 nlp的主要内容 1 词语处理(lexical analysis part-of-speech tagging):分词与词性标…

第五十期:工作强度超996,失业半年即出局,硅谷为何如此“嗜血”?

在硅谷,靠创业发财的人被称为中了“硅谷六合彩”,大多数个体的艰难挣扎,最终换来了硅谷长久的繁荣昌盛。 划重点 1、在硅谷,靠创业发财的人被称为中了“硅谷六合彩”。 2、谷歌的合同工必须比正式工早两小时到公司打卡&#xff…

分块入门笔记

祝劳动快乐 数列分块 数列分块入门5 蒲公英 莫队 小Z的袜子 数颜色/维护队列 乱搞 块速递推 块状链表 文本编辑器 树上分块 王室联邦 树的统计 转载于:https://www.cnblogs.com/HenryHuang-Never-Settle/p/10804588.html

【数据结构与算法】二叉树

树 1.树、二叉树 2.二叉查找树 3.平衡二叉树、红黑树 4.递归树 一、树 1.树的常用概念 根节点、叶子节点、父节点、子节点、兄弟节点,还有节点的高度、深度以及层数,树的高度。 2.概念解释 节点:树中的每个元素称为节点 父子关系&#xff…

第二十四期:面试问:Kafka为什么速度那么快?该怎么回答

针对Kafka的基准测试可以参考,Apache Kafka基准测试:每秒写入2百万(在三台廉价机器上)下面从数据写入和读取两方面分析,为什么Kafka速度这么快 Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的&#x…

leetcode 91. Decode Ways

91. Decode Ways https://www.cnblogs.com/grandyang/p/4313384.html 当前位置只可能来自前一个位置和前两个位置的dp,来自前一个位置的话,当前的数字不能是0;来自前两个位置,必须是1到26之间 class Solution { public:int numDec…