news 2026/4/3 6:27:29

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/3/22 16:50:52

LC.700 | 二叉搜索树中的搜索 | 树 | 利用BST有序性

输入&#xff1a; 二叉搜索树的根节点 root 和一个整数 val。 要求&#xff1a; 在 BST 中找到节点值等于 val 的节点&#xff0c;并返回以该节点为根的子树。如果要找的节点不存在&#xff0c;返回 null。 输出&#xff1a; 目标节点的指针 TreeNode*。思路&#xff1a; 二叉搜…

作者头像 李华
网站建设 2026/3/19 0:02:21

Dify v1.11.0双发布背后:多模态知识库的技术抉择与避坑指南!

简介 Dify v1.11.0在48小时内连续发布相同版本&#xff0c;暴露了多模态知识库处理大文件时的稳定性问题。官方紧急修复后功能范围收缩&#xff0c;新增检索测试工具评估风险。文章建议采用渐进式升级策略&#xff1a;先评估测试&#xff0c;再灰度部署&#xff0c;最后在满足…

作者头像 李华
网站建设 2026/3/22 11:27:53

LobeChat能否用于直播弹幕互动?实时问答系统构想

LobeChat能否用于直播弹幕互动&#xff1f;实时问答系统构想 在今天的直播生态中&#xff0c;一场万人同时在线的带货或知识分享直播&#xff0c;往往伴随着每秒数百条弹幕的“信息洪流”。观众热情高涨地提问、打赏、互动&#xff0c;但主播却常常只能捕捉到冰山一角——大多数…

作者头像 李华
网站建设 2026/3/20 15:13:58

语义共生:GEO如何引领人机协作的内容新范式

我们正在从“人机交互”时代迈向“人机协作”时代。在信息获取层面&#xff0c;用户不再是孤独的搜索者&#xff0c;而是与AI结成了紧密的“思考伙伴”。GEO的深远意义&#xff0c;在于它首次系统性地提出了如何为这位“伙伴”提供最佳协作素材&#xff0c;从而共同为用户创造超…

作者头像 李华