【LeetCode: 106. 从中序与后序遍历序列构造二叉树 + DFS】

LeetCode106:从中序与后序遍历序列构造二叉树(二叉树与递归) 从中序与后序遍历序列构造二叉树 1、根据一棵树的中序遍历与后序遍历构造二叉树。 2、假设树中没有重复的元素。 public class TreeNode{ int val; TreeNode left,right; public TreeNode(int val){this.val = val;} } /** * 通过后序遍历和中序遍历构建一颗二叉树:递归实现 * @param inorder * @param 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。

示例 1:
在这里插入图片描述

输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
输出: [3,9,20,null,null,15,7]
示例 2:

输入: preorder = [-1], inorder = [-1]
输出: [-1]

提示:

1 <= inorder.length <= 3000
postorder.length == inorder.length
-3000 <= inorder[i], postorder[i] <= 3000
inorder 和 postorder 都由 不同 的值组成
postorder 中每一个值都在 inorder 中
inorder 保证是树的中序遍历
postorder 保证是树的后序遍历

🌟 求解思路&实现代码&运行结果


⚡ DFS

🥦 求解思路
  1. 该题主要是通过中序和后序遍历来还原一颗二叉树,核心的思路:在后序中找到根节点,根据该节点在中序遍历数组中的位置,根据中序划分左右子树,递归这个过程,还原一颗二叉树。
  2. 有了基本的思路,接下来我们就来通过代码来实现一下递归和迭代的解法。
🥦 实现代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 * int val;
 * TreeNode left;
 * TreeNode right;
 * TreeNode() {}
 * TreeNode(int val) { this.val = val; }
 * TreeNode(int val, TreeNode left, TreeNode right) {
 * this.val = val;
 * this.left = left;
 * this.right = right;
 * }
 * }
 */
class Solution {
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        int n = inorder.length;
        int m = postorder.length;
        if (n == 0 || m == 0)
            return null;
        TreeNode root = new TreeNode(postorder[m - 1]);
        for (int i = 0; i < inorder.length; i++) {
            if (postorder[m - 1] == inorder[i]) {
                root.left = buildTree(Arrays.copyOfRange(inorder, 0, i), Arrays.copyOfRange(postorder, 0, i));
                root.right = buildTree(Arrays.copyOfRange(inorder, i + 1, inorder.length),
                        Arrays.copyOfRange(postorder, i, postorder.length - 1));
                break;
            }
        }
        return root;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

PET,CT图像融合笔记 PET-CT怎样进行图像融合?图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果) 阅读详情

相关推荐

Springboot项目中使用邮箱验证码注册登录的代码实现

本文介绍了在Spring Boot应用中实现邮箱验证码注册和登录功能的完整方案。文章首先概述了三种用户认证方式(邮箱验证码注册/登录和传统密码登录),然后详细说明了实现所需的技术栈(Spring Boot、Spring Security、JWT等)。重点阐述了邮件服务配置、验证码生成与存储的核心实现,包括QQ邮箱授权码获取、Thymeleaf邮件模板处理以及验证码缓存管理。最后展示了发送验证码和用户注册的API实现,为开发者提供了完整的参考方案。该方案兼顾安全性和用户体验,适合现代Web应用的用户认证需求。

BXCQ_xuan的技术专栏 | 实战干货·实践教程·学习笔记 1337

【LeetCode: 1027. 最长等差数列 | 暴力递归=>记忆化搜索=>动态规划】

【LeetCode: 1027. 最长等差数列 | 暴力递归=>记忆化搜索=>动态规划】 给你一个整数数组 nums,返回 nums 中最长等差子序列的长度。 回想一下,nums 的子序列是一个列表 nums[i1], nums[i2], ..., nums[ik] ,且 0

Coder_ljw的博客 565

zynq7020的arm A9核降频实录

zynq arm9 cortex a9 降频

qq_40011737的博客 8763

【Docker命令详细讲解&实操演示】

【Docker命令详细讲解&实操演示】当然,更多关于docker的学习命令和上面我们的学习过程一样,大家可以自行学习。好了,关于【Docker命令详细讲解&实操演示】就结束了,持续更新中。

Coder_ljw的博客 546

VConsole动态加载

// 移动端真机调试工具 vconsole import VConsole from "vconsole"; import Vue from "vue"; // 动态使用VConsole if(process.env.NODE_ENV==='production'){ if(process.env.VUE_APP_BASEURL.includes('test')||process.env.VUE_APP_BASEURL.includes('pre')){ Vue.prototype

aliven1的博客 1041

系统安装、qt配置、安装pcie驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek.

weixin_44832804的博客 2204

【Linux操作系统上用Docker部署Tomcat】

【Linux操作系统上用Docker部署Tomcat的详细步骤、目录挂载、访问tomcat遇到的问题,资源找不到的原因以及对应的解决方案】进入webapps文件夹,发现里面是空的(tomcat默认的欢迎页面实际上放在的路径应该是:webapps/ROOT/index.jsp),同一个目录下还有个webapps.dist的文件,进入才发现原本应该在webapps文件中的文件都在webapps.dist文件中。所以将webapps.dist重命名为webapps即可解决问题。

Coder_ljw的博客 1692

HUMAnN数据库国内备份下载源(转自刘永鑫博士github)

百度云链接 R语言常用包合集 Windows 10版4.0.x:链接:https://pan.baidu.com/s/1JFwLP2SonK1howD5MNgNYg 提取码:l08k Windows 10版3.6.x:链接:https://pan.baidu.com/s/1h-qR2lmlaMgR4M7VbgtAFg 提取码:s5fi 下载后解压至当前目录,可获得3.6/4.0目录,剪切并替换文档 - R - win-library - 3.6/4.0 目录即可 扩增子数据库 宏基因组数据库 HUM.

zlabx的博客 3240

深度优先搜索DFS:力扣105从前序与中序遍历序列构造二叉树&力扣106从中序与后序遍历序列构造二叉树

一、从前序与中序遍历序列构造二叉树 1、题目描述 2、题解: 此题考查二叉树,并且可用深度优先搜索去做题。找到规律,利用递归去做题。我们可以自己画一个二叉树,然后写出前序和中序遍历,然后根据两者重新画一颗二叉树。递归结束的条件是两个数组有一个为空,并且要判断如果长度不相等直接返回None。前序遍历就是“根左右”也就是第一个数一定是根,中序遍历是“左根右”。如下图:先以preorder[0]创建根,然后确定根节点在inorder中的位置index,然后寻找左右子树,递归就可以了,左子树:preorder[1

weixin_42042056的博客 211

PCIe Crosslink

PCIe Crosslink(交叉连接)是一种特殊的PCIe链路连接方式,允许两个PCIe设备(通常是Root Complex或Endpoint)是指两个PCIe设备(如两个CPU、两个FPGA或两个GPU)通过PCIe链路直接连接,形成点对点(P2P)通信通道。:两个Intel/AMD CPU通过PCIe Crosslink直接通信(替代UPI/Infinity Fabric)。:主板需提供PCIe Crosslink连接(如特定插槽支持x16/x8 Crosslink)。

zly8865372的博客 1635

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2843

代码随想录算法训练营第十八天 | 前中后序构造二叉树

递归求深度的写法,我们在110.平衡二叉树 (opens new window)中详细的分析了深度应该怎么求,高度应该怎么求。递归中其实隐藏了回溯,在257. 二叉树的所有路径 (opens new window)中讲解了究竟哪里使用了回溯,哪里隐藏了回溯。层次遍历,在二叉树:层序遍历登场!深度讲解了二叉树层次遍历。所以本题涉及到的点,我们之前都讲解过,这些知识点需要同学们灵活运用,这样就举一反三了。112. 路径总和。

Fight___的博客 998

CUDA 12.1环境下的动态库链接修复:从libcusparse.so.12的undefined symbol错误到libnvJitLink.so.12的正确加载

本文详细解析了在CUDA 12.1环境下,PyTorch因libcusparse.so.12找不到libnvJitLink.so.12中的__nvJitLinkAddData_12_1符号而报错的根本原因。通过诊断动态链接过程,提供了创建符号链接、修改环境变量等三种解决方案,并深入探讨了nvJitLink组件的作用及环境配置的最佳实践,帮助开发者彻底解决此类动态库链接问题。

c8d9e0f1的博客 204

LeetCode-106.从中序与后序遍历序列构造二叉树(相关话题:深度优先搜索)

根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路:与leetcode105(https://blog.csdn....

weixin_38823568的博客 150

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

代码随想录算法训练营第十八天 | 513.找树左下角的值、112. 路径总和、 106.从中序与后序遍历序列构造二叉树

题目链接:513. 找树左下角的值 - 力扣(LeetCode)用层序遍历很简答,就不去想递归法了 112. 路径总和 题目链接:112. 路径总和 - 力扣(LeetCode) 106.从中序与后序遍历序列构造二叉树 题目链接:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)有难麻烦,没时间自己写,看看Carl的方法吧

weixin_45073603的博客 210

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

106. 从中序与后序遍历序列构造二叉树

中序数组我们都切成了左中序数组和右中序数组了,那么后序数组就可以按照左中序数组的大小来切割,切成左后序数组和右后序数组。首先后序数组的最后一个元素指定不能要了,这是切割点 也是 当前二叉树中间节点的元素,已经用了。后序数组没有明确的切割元素来进行左右切割,不像中序数组有明确的切割点,切割点左右分开就可以了。切割点在后序数组的最后一个元素,就是用这个元素来切割中序数组的,所以必须要先切割中序数组。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)而中序数组的右边界则是。

YouMing_Li的博客 1327

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LeetCode 106. 从中序与后序遍历序列构造二叉树 【c++/java详细题解】

目录1、题目2、思路3、c++代码4、Java代码 1、题目 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3] 输出:[3,9,20,null,null,15,7] 示例 2: 输入:inorder = [-1], postorder = [-1] 输出:[.

林深不见鹿 的博客 3345

力扣题解-106. 从中序与后序遍历序列构造二叉树(分治法思想,递归的方式求解)

利用分治法思想和递归方法解决力扣题目:106. 从中序与后序遍历序列构造二叉树

lpp 5197

每日一练:LeeCode-106、从中序与后序遍历序列构造⼆叉树、LeeCode-106、从前序与中序遍历序列构造二叉树【二叉树+DFS+分治】

106、从中序与后序遍历序列构造⼆叉树 给定两个整数数组 inorder 和 postorder ,其中inorder是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 105、从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

小孔靠得住的博客 1120

LeetCode106.从中序与后序遍历序列构造二叉树

LeetCode106.从中序与后序遍历序列构造二叉树

Love Peace 687

超容易理解+模版套路解决LeetCode 前序+中序、中序+后序、前序+后序遍历构造树问题

这三道题的解法类似 都是基于归并排序的分治思想 不断划分左右子树进行解答。下列题1和题2解法几乎完全相同 题三根据前序后序遍历的话需要加以注意 后面详细讲解。

SoulruiA的博客 1462

代码随想录算法训练营第十六天|513.找树左下角的值、112.路径总和、113.路径总和Ⅱ、105.从前序与中序遍历序列构造二叉树、106.从中序与后序遍历序列构造二叉树

的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。路径总和等于给定目标和的路径。,请构造二叉树并返回其根节点。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。是二叉树的中序遍历,当前累计和+子节点值。

weixin_44302271的博客 671

leetcode:106. 从中序与后序遍历序列构造二叉树、654. 最大二叉树、106. 从中序与后序遍历序列构造二叉树(JavaScript)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录思路:要点:循环不变量要点:子树后序遍历序列的起点、终点如何确定循环不变量是后序序列左闭右开代码循环不变量是后序序列左闭右闭代码 106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder = [9,3,15,20,7], postor.

weixin_46015333的博客 1384

二叉搜索树刷题笔记:第K小的元素,最小绝对差,从前序与中序遍历序列构造二叉树、中序与后序、前序与后序

详细解析:二叉搜索树中第 K 小的元素,二叉搜索树的最小绝对差,从前序与中序遍历序列构造二叉树,从中序与后序遍历序列构造二叉树,根据前序和后序遍历构造二叉树

学习记录 1024

代码随想录算法训练营第十五天 | 513.找树左下角的值、112. 路径总和、113. 路径总和 II、106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

代码随想录算法训练营第十五天 | 513.找树左下角的值、112. 路径总和、113. 路径总和 II、106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

北天的博客 1290

从前序与中序遍历构造二叉树——LeetCode 105 详解

本文系统梳理了如何利用前序/中序/后序遍历序列构造二叉树的核心思路。重点分析了前序+中序构造二叉树的关键观察点:前序首元素为根,中序根位置划分左右子树,通过递归实现。文章通过具体例子演示遍历顺序,并扩展到中序+后序的构造方法。最后总结了从理解遍历规则到掌握构造技巧的学习路径,强调要在子树视角理解遍历序列的划分规律,通过手写练习建立直观认识。掌握这些方法可有效解决LeetCode 105和106等经典构造问题。

六六哥的博客 1082
上一篇: 【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】
下一篇: 【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值