剑指 Offer 07:重建二叉树

简介: 剑指 Offer 07:重建二叉树

题目

题目链接

输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。

假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

示例 1:

Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
Output: [3,9,20,null,null,15,7]

示例 2:

Input: preorder = [-1], inorder = [-1]
Output: [-1]

解题

leetcode-105:从前序与中序遍历序列构造二叉树这道题是一样的。

方法一:

class Solution {
public:
    unordered_map<int,int> umap;
    vector<int> preorder;
    vector<int> inorder;
    TreeNode* helper(int left,int right){
        if(left>right) return nullptr;
        int num=preorder.front();
        preorder.erase(preorder.begin());
        int mid=umap[num];
        TreeNode* root=new TreeNode(num);
        root->left=helper(left,mid-1);
        root->right=helper(mid+1,right);
        return root;
    }
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        this->preorder=preorder;
        this->inorder=inorder;
        for(int i=0;i<inorder.size();i++){
            umap[inorder[i]]=i;
        }
        return helper(0,inorder.size()-1);
    }
};
相关文章
|
NoSQL Java Redis
SpringBoot 配置Redis操作
SpringBoot 配置Redis操作
205 0
|
9月前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
491 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
12月前
|
存储 NoSQL 大数据
大数据 数据存储优化
【10月更文挑战第25天】
563 2
小功能⭐️Unity中利用材质自发光实现物体闪烁效果
小功能⭐️Unity中利用材质自发光实现物体闪烁效果
|
SQL 监控 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【8月更文挑战第29天】在数字化时代,网络安全和信息安全成为了全球关注的焦点。本文将探讨网络安全漏洞、加密技术以及提升个人和企业的安全意识等方面的重要性。我们将通过实例分析,了解如何防范网络攻击,保护数据安全,并提高对网络安全威胁的认识。
|
JavaScript
Vue 插槽 组件插入不固定内容
Vue 插槽 组件插入不固定内容
|
存储 Java Linux
Linux异步IO(AIO)
异步输入/输出 (AIO) 接口允许并行提交许多 I/O 请求,而不会产生每个请求的线程开销。 本文档的目的是解释如何使用 Linux AIO 接口,即函数家族 `io_setup`、`io_submit`、`io_getevents`、`io_destroy`。 目前,AIO 接口最适合直接“O_DIRECT”访问原始块设备,如磁盘、闪存驱动器或存储阵列。(访问裸盘)
1393 2
Linux异步IO(AIO)
|
Java 数据库连接
异常处理一:抓抛模型
异常处理一:抓抛模型
110 0
|
SQL 关系型数据库 MySQL
MySQL数据库基础:各类窗口函数操作一文详解
MySQL数据库基础:各类窗口函数操作一文详解
1447 0
MySQL数据库基础:各类窗口函数操作一文详解