news 2026/6/22 23:46:21

LC.1008 | 前序遍历构造二叉搜索树 | 树 | 递归遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.1008 | 前序遍历构造二叉搜索树 | 树 | 递归遍历

输入:
一个整数数组preorder,代表二叉搜索树的先序遍历结果。

要求:
根据给定的先序遍历还原出二叉搜索树(BST)。
BST 的性质是:对于任意节点,左子树所有节点值 < 当前节点值 < 右子树所有节点值。

输出:
构造出的二叉搜索树的根节点TreeNode*


思路:

本题解采用了直观的“递归 + 分治”策略,利用了二叉搜索树(BST)的核心性质来切分数据。

  1. 确定根节点
    前序遍历的第一个元素永远是当前子树的根节点。我们首先取出pre[0]创建根节点tmp

  2. 划分子集(分治)
    根据 BST 的性质,比根节点小的元素属于左子树,比根节点大的元素属于右子树。
    我们遍历pre数组中剩余的元素:

    • 若元素值小于pre[0],放入preleft数组。
    • 若元素值大于pre[0],放入preright数组。
  3. 递归构建

    • tmp->left= 递归处理preleft
    • tmp->right= 递归处理preright
    • 如果传入的数组为空,说明该分支已到达叶子节点下方,返回nullptr

优化:
当前解法在每一层递归都创建了新的vector,这会增加额外的空间开销和拷贝时间。更优的做法是传递原始数组的索引范围(start,end)或者使用“上限值控制法”来避免数组拷贝,但在逻辑理解上,当前的解法是符合直觉的。


复杂度:

  • 时间复杂度:O(N^2)
    • 在最坏情况下(例如链状树),每一层递归都需要遍历剩余所有元素并进行拷贝,导致总操作次数接近 N + (N-1) + … + 1。
  • 空间复杂度:O(N^2)
    • 每一层递归都创建了新的vector存储子数组,导致大量的额外空间消耗。

classSolution{public:TreeNode*bstFromPreorder(vector<int>&preorder){returntree(preorder);}TreeNode*tree(vector<int>pre){if(pre.size()==0){returnnullptr;}TreeNode*tmp=newTreeNode(pre[0]);vector<int>preleft,preright;for(inti=1;i<pre.size();i++){if(pre[i]>pre[0]){preright.push_back(pre[i]);}else{preleft.push_back(pre[i]);}}tmp->left=tree(preleft);tmp->right=tree(preright);returntmp;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 4:49:31

FICO 校验与替代技术点

GB01 - 允许替代的字段表 存储了所有允许被替代的字段列表业务场景&#xff1a;在一次做凭证行项目替代时&#xff0c;做了工厂字段的替代&#xff0c;但是始终不生效&#xff0c;查阅资料发现不是所有BSEG表中字段都允许做替代&#xff0c;需要调整配置表&#xff1a;GB01先决…

作者头像 李华
网站建设 2026/6/22 16:06:18

【万字长文】RAG系统分块策略完全指南:从基础到高级实践!

简介 本文全面介绍了RAG系统中的文档分块(Chunking)策略&#xff0c;从基础到高级详细解析了各种分块方法及其适用场景。重点讨论了分块对检索质量和生成响应的关键影响&#xff0c;对比了预分块与后分块策略&#xff0c;并详细介绍了固定大小、递归、基于文档、语义、LLM驱动…

作者头像 李华
网站建设 2026/6/23 2:57:09

LobeChat能否支持邮件通知功能?关键事件提醒机制

LobeChat 能否支持邮件通知&#xff1f;构建关键事件提醒机制的完整实践 在企业级 AI 应用逐渐普及的今天&#xff0c;一个智能聊天系统是否“聪明”&#xff0c;早已不再只取决于它回答问题的能力。真正考验其成熟度的&#xff0c;是它能否主动感知环境、识别重要时刻&#xf…

作者头像 李华
网站建设 2026/6/18 2:05:16

codex的效率命令结合vLLM,编程效率提升80%

codex的效率命令结合vLLM&#xff0c;编程效率提升80% 在AI原生开发浪潮席卷全球的今天&#xff0c;开发者对“即时反馈”的期待早已超越传统IDE的能力边界。想象这样一个场景&#xff1a;你在VS Code中写下一行注释——// 实现一个带超时控制的HTTP GET请求&#xff0c;不到半…

作者头像 李华
网站建设 2026/6/22 18:37:42

网络安全从业者生存指南:从入门到专家的全方位实战攻略

一、行业全景&#xff1a;网络安全到底有多“热”&#xff1f;1.1 市场数据说话人才缺口&#xff1a;2024年全国网安人才缺口达327万&#xff0c;年增长率15%薪资水平&#xff08;一线城市&#xff09;&#xff1a;应届生&#xff1a;8-15K/月&#xff0c;优秀者可达20K1-3年经…

作者头像 李华