【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);
    }

};
相关推荐
测试秃头怪13 小时前
2026最新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
Shingmc313 小时前
【Linux】进程控制
linux·服务器·算法
阿正的梦工坊13 小时前
DreamGym:通过经验合成实现代理学习的可扩展化
人工智能·算法·大模型·llm
小武~14 小时前
Leetcode 每日一题C 语言版 -- 45 jump game ii
c语言·算法·leetcode
行云流水62614 小时前
前端树形结构实现勾选,半勾选,取消勾选。
前端·算法
laocooon52385788615 小时前
一个C项目实现框架
c语言·算法
大吱佬15 小时前
面试记录自用
面试·职场和发展
c#上位机16 小时前
halcon图像增强——图像取反
图像处理·算法·c#·halcon
zheyutao16 小时前
割点和桥
算法·图论
@小码农16 小时前
2025年北京海淀区中小学生信息学竞赛第二赛段C++真题
开发语言·数据结构·c++·算法