【LeetCode】105. 从前序与中序遍历序列构造二叉树

作者:小卢

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ------《人民日报》


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

力扣

题目描述:

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

示例:

思路:

利用previ去变量前序数组找到根的位置,然后再去中序数组里面找到根,分割左右子树区间

然后begin和end在中序数组去分割左右子树,然后利用递归构建树

代码:

cpp 复制代码
class Solution {
public:
    TreeNode* _buildTree(vector<int>& preorder, vector<int>& inorder,int&previ,int begin,int end) {
        if(begin>end)
        return nullptr;
        TreeNode*root=new TreeNode(preorder[previ]);
        int rooti=0;
        while(preorder[previ]!=inorder[rooti])
        {
            rooti++;
        }
        previ++;
        root->left=_buildTree(preorder,inorder,previ,begin,rooti-1);
        root->right=_buildTree(preorder,inorder,previ,rooti+1,end);
        return root;
}
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        int i=0;
        return _buildTree(preorder,inorder,i,0,inorder.size()-1);
    }

};
相关推荐
坚持编程的菜鸟7 小时前
模拟实现memmove
c语言·算法·模拟实现memmove
天才测试猿8 小时前
软件测试知识总结(基础篇)
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
wabs6668 小时前
关于图论【最短路径之Dijkstra算法(堆优化版)|卡码网47.参加科学大会的思考】
数据结构·算法·图论·优先级队列·邻接表·小顶堆·卡码网
坚持编程的菜鸟8 小时前
编写判断大小端程序
c语言·算法·判断大小端
papaofdoudou8 小时前
判断排列逆序奇偶性的乘积判别法(范德蒙德符号法)
人工智能·算法
linux-hzh9 小时前
百日算法修炼 · Day 03
java·算法
问商十三载9 小时前
RAG 检索效果差怎么排查?2026 五层诊断法完整指南
开发语言·人工智能·windows·python·算法
嵌入式老牛10 小时前
三相电气量采集模块设计(三)非同步采样时的精度提升
算法·精度·计量
今天AI了吗11 小时前
精细化落地教程:TimechoAI调参标准+数据清洗规范+误差归因+阈值适配全维度指南
大数据·人工智能·算法