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

【中等】力扣算法题解析LeetCode109:有序链表转换二叉搜索树 题目要求将升序链表转换为平衡二叉搜索树(BST)。通过快慢指针法找到链表中点作为根节点,分割左右子链表后递归构建左右子树,确保BST性质和平衡性。时间复杂度O(n log n),空间复杂度O(log n)。Java实现利用快慢指针分割链表,递归构造BST,并通过边界条件处理空链表或单节点情况。代码简洁高效,已通过力扣测试。 (字数:150) 阅读详情

有序链表转换二叉搜索树

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

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

示例:

给定的有序链表: [-10, -3, 0, 5, 9],

一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:

  0
 / \

-3 9
/ /
-10 5

思路

模仿中序遍历
类似题目leetcode108 将有序数组转换为二叉搜索树

实现

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* cur;
    TreeNode* sortedListToBST(ListNode* head) {
        cur = head;
        TreeNode* res;
        int len = 0;
        while (head != NULL) {
            ++len;
            head = head->next;
        }
        return func(0, len);
    }
    TreeNode* func(int start, int end) {
        if (start == end) {
           return NULL;
        }
        
        
        int mid = (start + end) / 2;
        TreeNode* left = func(start, mid);
        TreeNode* res = new TreeNode(cur->val);
        res->left = left;
        cur = cur->next;
        TreeNode* right = func(mid + 1, end);
        res->right = right;
        return res;
    }
};
S7-1200 数据日志 数据日志文件按照标准 CSV 格式存储在 S7-1200 CPU 装载存储器或 S7-1200 SIMATIC 存储卡中。分别可通过 PLC Web 服务器或将数据文件传送到 PC 进行管理、查看。 一、测试目的: 下面以数据日志文件存储在 S7-1200 CPU 装载存储器中,使用PLC Web 服务器进行管理为例,实现下述功能: (1)执行“DataLogging”指令将产品型号“Type”,长度“Length”,宽度“Width”三个变量值写入到数据日志文件; (2)当写入的条数达到设定的3条 阅读详情

相关推荐

从零到一:用Python打造你的智能交互桌宠,附完整源码与打包指南

本文详细介绍了如何从零开始使用Python开发智能交互桌宠,涵盖环境配置、窗口创建、动图加载、交互功能实现及打包发布全流程。教程特别适合零基础开发者,通过完整源码和分步指南,帮助读者快速掌握桌面宠物开发技巧,打造个性化AI伴侣。

weixin_29094539的博客 292

有序链表转换二叉搜索树(快慢指针+递归实现)

题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 注意点 1、利用慢指针(一次走一步)和快指针(一次走两步)的特点(当快指针到达尾节点或下一节点为尾节点时,慢指针刚好到达中间节点),得到中间节点; 2、将中间节点作

weixin_43857345的博客 259

手把手教你用Python处理MAHNOB-HCI多模态数据集(含脑电EEG/眼动/视频数据同步实战)

本文详细介绍了如何使用Python处理MAHNOB-HCI多模态数据集,涵盖脑电(EEG)、眼动追踪和视频数据的同步解析与对齐。通过MNE-Python、pandas和OpenCV等工具,实现从BDF、TSV到XML格式的高效处理,解决时间轴对齐难题,助力情感计算与人机交互研究。

weixin_30998797的博客 367

升序链表转换成二叉搜索树(BST)

题目描述给定一个按升序排序的单链列表,将其转换为高度平衡的BST。解题思路关键点:二叉搜索树的中序遍历是升序的(1)快慢指针找到链表中点,作为根节点(2)递归链表的左半部分为左子树(3)递归链表的右半部分为右子树代码示例class Solution {public:    TreeNode *sortedListToBST(ListNode *head) {        return sorte...

小肥羊快快跑 601

RK3576+IMX415 MIPI摄像头零拷贝显示系统

MIPI CSI-2是嵌入式视觉系统中主流的高速图像传感器接口标准,其核心价值在于低延迟、高带宽与硬件级DMA直通能力。基于V4L2子系统与DRM/KMS驱动栈,可构建从传感器RAW数据到帧缓冲区的零拷贝通路,显著降低CPU负载并提升实时性。该技术广泛应用于工业检测、边缘AI推理前数据接入及多路同步采集等场景。本文以Rockchip RK3576 SoC和索尼IMX415传感器为典型组合,详解MIPI物理层适配、内核驱动集成、GStreamer零拷贝管道搭建及systemd服务化部署,覆盖从硬件信号完整性到

weixin_36047538的博客 216

MIKE水动力笔记7_实测数据与模型输出结果的拟合对比

上一博文【MIKE水动力笔记6】主要讲解如何自己制作实测数据的时间序列文件dfs0,而本博文讲解如何进行实测数据与模型输出结果的拟合对比。

晏长街的博客 1万+

有序链表转换二叉搜索树

描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...

qq_17856593的博客 244

UG二次开发之 三面摆正体代码分析

CIUGUIBlock 是一个从UIBlock 派生的一个类,为什么要从UIBlock 派生出CIUGUIBlock,这是为了兼容低版的UG。如果我们不从的UIBlock 派生控件类对象指针,在UG 8.5以下的版本,会出现编译错误的问题。这是一个简单的入门功能,包括了不少的常用的UF函,下面我们将结合成品代码一起分析一下常用的函数,这对初学者是必要的。根据创建好的UI控件,在 initialize_cb 中创建控件的指针对象。//根据选定的面,指定 X,Y坐标系轴。//根据变换的矩阵,平移实体。

u014657217的博客 350

有序递增链表转化为平衡的二叉搜索树(LeetCode: Convert Sorted List to Binary Search Tree )

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.     首先,这里是有序递增链表,那么链表的中间节点一定是二叉搜索树的根节点,左侧一半为左子树,右侧一半为右子树,这可以构建一个递归的过程。那么如何找到链表的中间节点呢?

nlgshw的专栏 637

AI Agent在智能广告投放中的应用

随着互联网的快速发展,广告投放市场变得越来越复杂和竞争激烈。传统的广告投放方式往往难以精准地触达目标受众,导致广告资源的浪费。AI Agent作为一种智能的自动化程序,能够在复杂的环境中自主学习、决策和执行任务。本文章的目的在于深入探讨AI Agent在智能广告投放中的应用,研究如何利用AI Agent提高广告投放的精准度、效率和效果,降低成本。范围涵盖了AI Agent的基本原理、相关算法、在广告投放中的具体应用场景以及实际案例分析等方面。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 616

特殊通信领域场景应用:基于Simulink的数字预失真(DPD)算法仿真建模示例

增益压缩:高功率输入时输出信号的增益下降。相位失真:输入信号的相位随功率变化而改变。带外干扰:非线性失真会引入额外的频谱分量,影响邻道信号。多项式模型:用多项式拟合功率放大器的非线性特性。查找表(LUT):通过离线训练生成预失真映射表。自适应算法:实时调整预失真参数以动态补偿失真。发送端:生成随机比特流并调制为射频信号。预失真模块:对输入信号进行预失真处理。功率放大器模块:模拟非线性失真。接收端:解调信号并评估误码率(BER)。

xiaoheshang_123的博客 272

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

给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...

huanghuansen的博客 1087

计算机网络基础:揭开网络世界的神秘面纱

计算机网络基础:揭开网络世界的神秘面纱,计算机网络已深度融入现代生活,这篇文章对其基础内容展开全面阐述。开篇介绍计算机网络的定义,说明其由计算机设备、网络设备和传输介质构成。接着从地域范围和拓扑结构两个维度对计算机网络进行分类,并详细讲解 OSI 和 TCP/IP 参考模型,明晰各层功能与联系。随后阐述网络通信协议的定义及常见协议,如 TCP/IP、HTTP 等。最后聚焦网络安全,涵盖定义、重要性以及防火墙、加密技术等常用安全技术。文章旨在帮助读者构建计算机网络基础知识体系,理解其在生活和工作中的应用与价值

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

【每日力扣Leetcode】109-将有序链表转换为二叉搜索树

力扣题库109,将有序链表转换为二叉搜索树。 题目链接点这里。 文章目录题目描述解题思路初始答案改进答案注意事项 题目描述 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3

T型人小付的博客 372

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

题目描述(中等难度) 和 108 题 是一样的,都是给定一个升序序列,然后生成二分平衡查找树。区别在于 108 题给定的是数组,这里给的是链表。 解法一 大家先看一下 108 题 吧,算法的关键是取到中间的数据做为根节点。而这里链表的话,由于不支持随机访问,所以会麻烦些。最简单的思路就是我们把链表先用线性表存起来,然后题目就转换成 108 题了。 为了方便,把上一道题的数组参数改为List 。...

wind_liang的博客 1002

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode第109题_有序链表转换二叉搜索树

给定一个单链表的头节点head,其中的元素,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。

qq_40263592的博客 1449

LeetCode 力扣 109. 有序链表转换二叉搜索树 convert sorted list to binary search tree

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录109. 有序链表转换二叉搜索树题目描述示例:1,快慢指针2. 数组方式提交结果链表快慢指针 109. 有序链表转换二叉搜索树 题目描述 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10,

motongxue的博客 260

LeetCode 109. 有序链表转换二叉搜索树 Java实现 递归详解

这道题目考察了对链表和二叉搜索树的理解以及递归方法的应用。通过找到链表的中点并递归构建左右子树,可以有效地将有序链表转换为高度平衡的二叉搜索树。在实际应用中,类似的转换操作可能会用于数据结构的转换、算法优化等领域。掌握这种操作对于解决更复杂的问题具有重要的基础意义。希望这份文档能够帮助你更好地理解和实现有序链表转换二叉搜索树的问题!如果有任何进一步的问题或需要更多的优化,请随时告知。

Lentr0py的博客 1089

LeetCode109-有序链表转换二叉搜索树

昨天去了汉口一屠宰场 观看一家公司如何卸猪 宰猪比较血腥的场景我就没看了 至于我会什么会有如此雅兴去捣鼓这事儿 那是因为最近参加的一个比赛 刚好是要卖猪肉哈哈哈哈 不过去了那家屠宰场观看了他们养猪的地方之后 你会发现你不敢再吃猪肉了 环境是真的很差 猪,浑身比较脏。 也是可怜! 来张还算是比较萌的图片哈哈哈哈哈 109-有序链表转换二叉搜索树 给定一个单链表,其中的元...

飞奔的菜猪的博客 247

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

相比于LeetCode 108 , 这道题变成了中等难度的题目, 在 107 中, 我使用的是以中心点作为分割, 然后数组左右两部分分别作为左子树和右子树去进行递归, 这道题我也打算使用这个思路, 步骤为: 1. 找到链表的中心位置. 2. 构造子树 3. 递归 问题在于如何找到链表的中心节点? LeetCode 前面的有关于链表的题目, 经常是会使用"快慢指针"的方法: ...

sparrowxin的博客 385

力扣LeetCode #109 有序链表转换二叉搜索树(SortedListToBST)

- 题目描述 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 来源:LeetCode - 示例 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:        0      / &

weixin_49155948的博客 313

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

题目难度:★★★ 题目链接: https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree 题目描述 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3,...

刘猿猿 581

LeetCode 刷题【109. 有序链表转换二叉搜索树】

将有序链表转换为平衡二叉搜索树的方法。第一种采用插入后检查平衡并左旋调整的复杂方法,涉及高度计算和旋转操作。第二种是官方提供的简洁分治解法,通过递归构建左右子树并利用链表顺序特性直接赋值,无需旋转操作。

gzkhxohc的博客 357

Java实现 LeetCode 109 有序链表转换二叉搜索树

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

Marcus 3387

【力扣】[二叉树] LeetCode109. 有序链表转换二叉搜索树

1、题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree   2、思路分析 1)二分 /** * Definition for singly-linked list. * struct ListNode { * i

金金金金金的博客 283
上一篇: leetcode107. 二叉树的层次遍历 II
下一篇: leetcode110. 平衡二叉树
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值