news 2026/8/2 8:32:30

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/8/2 5:11:19

【隐语Secreflow】如何配置 Kuscia 对请求进行 Path Rewrit

打开链接即可点亮社区Star&#xff0c;照亮技术的前进之路。 Github 地址&#xff1a;https://github.com/secretflow/kuscia 背景 隐私计算合作机构之间的网络较为复杂&#xff0c;经常存在多层次的网关&#xff0c;网关根据 Path 将请求路由到真正的业务节点。为了给这种组…

作者头像 李华
网站建设 2026/8/1 7:57:42

毕设开源 基于深度学习的人脸识别【全网最详细】

文章目录0 简介1 人脸识别 - 常用实现技术1.1 基于几何特征的人脸识别方法1.2 初级神经网络方法。1.3 深度学习方法。2 人脸识别算法缺陷3 人脸识别流程3.1 相关数据集3.2 对齐3.3 仿射变换3.4 人脸目标检测3.5 人脸特征提取3.5.1 分类模型有哪些3.5.2 度量学习模型——FaceNet…

作者头像 李华
网站建设 2026/8/2 3:09:47

基于52单片机的十字路口红绿灯系统控制设计

第一章 设计背景与核心功能需求 十字路口作为交通流交汇节点&#xff0c;交通秩序直接影响通行效率与安全。传统固定时序红绿灯难以适配早晚高峰、平峰等不同时段的车流量变化&#xff0c;易导致某一方向拥堵、另一方向资源闲置的问题。52单片机&#xff08;以STC89C52RC为核心…

作者头像 李华
网站建设 2026/8/1 11:33:52

tensorflow 零基础吃透:RaggedTensor 的不规则形状与广播机制

零基础吃透&#xff1a;RaggedTensor的不规则形状与广播机制 RaggedTensor的核心特征是「不规则维度」&#xff08;行长度可变&#xff09;&#xff0c;其形状描述和广播规则与普通tf.Tensor既有共通性&#xff0c;也有针对“可变长度”的特殊设计。以下分「不规则形状&#xf…

作者头像 李华