力扣1008:前序重建BST
力扣 1008 题解析与 C 代码一、问题解析题目描述给定一个整数数组preorder表示二叉搜索树BST的前序遍历结果请重建该二叉搜索树并返回其根节点。题目保证对于给定的测试用例总能找到一棵二叉搜索树与之对应。核心要点二叉搜索树BST性质对于任意节点其左子树所有节点值 该节点值 右子树所有节点值。前序遍历顺序根节点 → 左子树 → 右子树。重建思路前序遍历的第一个元素是根节点随后连续小于根节点的部分是左子树的前序遍历剩余部分是右子树的前序遍历。递归应用此规则即可重建整棵树。算法步骤取当前区间[start, end]的第一个元素作为根节点值。找到第一个大于根节点值的索引mid该索引将区间划分为左子树[start1, mid-1]和右子树[mid, end]。递归构建左子树和右子树。返回根节点。时间复杂度O(n²)最坏情况如斜树每次需线性扫描划分左右子树。可优化至 O(n)见后续优化方案。空间复杂度O(n)递归栈深度。二、C 代码实现基础递归解法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: TreeNode* bstFromPreorder(vectorint preorder) { return build(preorder, 0, preorder.size() - 1); } private: TreeNode* build(vectorint preorder, int start, int end) { if (start end) return nullptr; // 当前子树的根节点是前序遍历的第一个元素 TreeNode* root new TreeNode(preorder[start]); // 找到第一个大于根节点值的索引划分左右子树 int mid start 1; while (mid end preorder[mid] preorder[start]) { mid; } // 递归构建左右子树 root-left build(preorder, start 1, mid1); root-right build(preorder, mid, end); return root; } };优化解法O(n) 时间复杂度利用单调栈模拟递归过程一次遍历完成构建class Solution { public: TreeNode* bstFromPreorder(vectorint preorder) { if (preorder.empty()) return nullptr; stackTreeNode* stk; TreeNode* root new TreeNode(preorder[0]); stk.push(root); for (int i 1; i preorder.size(); i) { TreeNode* node new TreeNode(preorder[i]); if (preorder[i] stk.top()-val) { // 当前值小于栈顶作为左子节点 stk.top()-left node; } else { // 当前值大于栈顶找到合适的父节点 TreeNode* parent nullptr; while (!stk.empty() preorder[i] stk.top()-val) { parent stk.top(); stk.pop(); } parent-right node; } stk.push(node); } return root; } };三、算法对比特性基础递归解法优化栈解法时间复杂度O(n²)O(n)空间复杂度O(n)O(n)核心思想递归划分左右子树单调栈维护节点关系适用场景数据量较小数据量较大或要求高效代码复杂度简单直观稍复杂但高效四、关键点说明边界处理递归解法中需确保start end时返回nullptr避免无限递归。划分点查找基础解法中线性查找第一个大于根节点的索引是 O(n²) 复杂度的根源。单调栈原理优化解法利用栈保存尚未设置右子树的节点遇到更大值时弹出栈顶直到找到合适父节点确保 BST 性质。相关题目本题与力扣 105从前序与中序遍历构造二叉树思路相似但 BST 性质使得无需中序遍历即可确定左右子树边界。五、测试示例// 测试代码示例 int main() { Solution solution; vectorint preorder {8, 5, 1, 7, 10, 12}; TreeNode* root solution.bstFromPreorder(preorder); // 中序遍历验证BST 中序遍历应为升序 // 预期输出1 5 7 8 10 12 return 0; }参考来源java分割一个整数数组,力扣算法-561.数组拆分-数组-java2019-07-06哈哈哈哈哈哈宋宋在火车上睡觉觉的时候本可爱已经偷偷做了一道PAT的辣鸡简单题这么下去不行啊做的不能一次性全对哪怕简单但是做的太慢了要加快速度啊下周安排下时间刷力扣哈哈哈剑指Offer - 面试题7. 重建二叉树递归PAT 1008 数组元素循环右移问题哈工大算法导论骆吉洲主讲完整课件与核心算法实战解析

相关新闻

Donau集群环境变量配置指南:SLURM_*变量到Donau的完美转换

Donau集群环境变量配置指南:SLURM_*变量到Donau的完美转换

Donau集群环境变量配置指南:SLURM_*变量到Donau的完美转换 【免费下载链接】donau-slurm-wrappers donau-slurm-wrappers provide some scripts for Slurm Users to submit and manage jobs in Donau cluster environment 项目地址: https://gitcode.com/openeule…

2026/7/7 19:06:37 阅读更多 →
OpenSSL漏洞修复与版本升级:保障系统安全的关键步骤

OpenSSL漏洞修复与版本升级:保障系统安全的关键步骤

OpenSSL漏洞修复与版本升级:保障系统安全的关键步骤 【免费下载链接】openssl 项目地址: https://gitcode.com/openeuler/openssl 前往项目官网免费下载:https://ar.openeuler.org/ar/ OpenSSL作为开源的加密库,广泛应用于各种系统和…

2026/7/7 19:06:37 阅读更多 →
终极鸣潮游戏模组指南:解锁无限游戏体验的完整教程

终极鸣潮游戏模组指南:解锁无限游戏体验的完整教程

终极鸣潮游戏模组指南:解锁无限游戏体验的完整教程 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》游戏中的技能冷却、体力限制和繁琐操作而烦恼吗?WuWa-Mod作为…

2026/7/7 19:06:37 阅读更多 →

最新新闻

STM32F411RE与TS2007FC构建高效音频系统方案

STM32F411RE与TS2007FC构建高效音频系统方案

1. TS2007FC与STM32F411RE音频系统架构解析在嵌入式音频系统设计中,TS2007FC D类音频放大器与STM32F411RE微控制器的组合堪称黄金搭档。这套方案完美融合了高效能数字控制与高保真音频放大的双重优势,特别适合对音质和能效都有严苛要求的应用场景。TS200…

2026/7/7 20:15:03 阅读更多 →
终极Windows与Office激活方案:KMS智能脚本完整指南

终极Windows与Office激活方案:KMS智能脚本完整指南

终极Windows与Office激活方案:KMS智能脚本完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否厌倦了Windows系统频繁弹出的激活提示?是否因为Office突然变为只…

2026/7/7 20:15:03 阅读更多 →
黑苹果EFI配置终极简化:OpCore Simplify让复杂变简单的完整指南

黑苹果EFI配置终极简化:OpCore Simplify让复杂变简单的完整指南

黑苹果EFI配置终极简化:OpCore Simplify让复杂变简单的完整指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾被黑苹果的复杂配…

2026/7/7 20:13:02 阅读更多 →
CTF逆向实战:使用unlicense工具脱壳Themida保护程序

CTF逆向实战:使用unlicense工具脱壳Themida保护程序

1. 项目概述:当CTF逆向遇上Themida强壳在CTF(Capture The Flag)逆向工程赛题中,遇到被商业强壳保护的程序是家常便饭,也是最能拉开选手水平差距的环节。Themida,作为一款知名的商业保护壳,以其强…

2026/7/7 20:09:01 阅读更多 →
Buzz语音转录工具:5步打造你的本地化音频处理工作站

Buzz语音转录工具:5步打造你的本地化音频处理工作站

Buzz语音转录工具:5步打造你的本地化音频处理工作站 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 还在为会议录…

2026/7/7 20:09:01 阅读更多 →
Stable Diffusion本地部署指南:从零搭建你的AI绘画工作站

Stable Diffusion本地部署指南:从零搭建你的AI绘画工作站

1. 项目概述:为什么你需要一个本地的AI绘画引擎如果你对AI绘画感兴趣,刷到过那些令人惊叹的赛博朋克城市或者唯美的二次元角色,那你大概率听说过Stable Diffusion。它不像Midjourney那样需要付费订阅,也不像DALL-E那样有使用次数限…

2026/7/7 20:04:59 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻