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

};
相关推荐
noipp1 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
程序员二叉2 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉2 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木2 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕2 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
北域码匠3 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
手写码匠4 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe14 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_115 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue5 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist