当前位置: 首页 > news >正文

力扣-105.从前序与中序遍历序列构造二叉树

题目描述

给定两个整数数组 preorderinorder ,其中 preorder 是二叉树的先序遍历inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

class Solution {
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if(preorder.size()==0)return NULL;TreeNode* root = new TreeNode(preorder[0]);if(preorder.size()==1)return root;int index = 0;for (int i = 0; i < inorder.size(); ++i) {if(inorder[i]==preorder[0])index = i;}vector<int> leftIn(inorder.begin(), inorder.begin()+index);vector<int> rightIn(inorder.begin()+index+1, inorder.end());vector<int> leftPre(preorder.begin()+1,preorder.begin()+1+index);vector<int> rightPre(preorder.begin()+1+index,preorder.end());root->left = buildTree(leftPre,leftIn);root->right = buildTree(rightPre,rightIn);return root;}
};

小结:递归的思路也是非常清晰,C++vector切割数组真的很方便,大概思路就是先用先序集合确定根结点,再找到在中序的位置,之后切割、递归。

相关文章:

  • 国产ETL数据集成软件和Informatica 相比如何
  • Node.js中MongoDB连接的进阶模块化封装
  • attention_weights = torch.ones_like(prompt_embedding[:, :, 0]):切片操作获取第二维度,第三维度
  • OpenCV人脸识别LBPH算法原理、案例解析
  • BGP联邦和发射试验
  • 查询公网IP地址的方法:查看自己是不是公网ip,附内网穿透外网域名访问方案
  • python如何合并excel单元格
  • 生成式AI辅助编程目录
  • 芯片测试之Input Leakage Current(输入漏电流)Test全解析:从原理到实战
  • css 左右布局
  • REVERSE学习笔记(攻防世界xxxorrr)
  • 万文c++继承
  • AI日报 · 2025年5月14日|Android 生态大型更新与多端 Gemini 集成
  • 深度解析智能体:从概念到应用的全方位洞察
  • BGP实验2
  • 机器学习 Day16 聚类算法 ,数据降维
  • 高等数学第七章---微分方程(§7.4-§7.5可降阶的高阶微分方程、二阶线性微分方程)
  • AGI大模型(15):向量检索之调用ollama向量数据库
  • C++中如何实现一个单例模式?
  • SpringBoot--springboot配置文件详解以及简易整合MyBatis
  • 回望星河深处,唤醒文物记忆——读《发现武王墩》
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • 加拿大总理宣布新内阁名单
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 科普|揭秘女性压力性尿失禁的真相
  • 香港根据《维护国家安全条例》订立附属法例