106. 从中序与后序遍历序列构造二叉树(递归版)

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

	例如,给出
	中序遍历 inorder = [9,3,15,20,7]
	后序遍历 postorder = [9,15,7,20,3]
	
	返回如下的二叉树:
	    3
	   / \
	  9  20
	    /  \
	   15   7
	
	链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal
 */
package notsubmit;

public class MidPosBuildTree {
	/**
	 *	根据后序遍历与中序遍历的特点
	 *	采用递归的方式构建二叉树
	 *	以后会尝试使用迭代的方式实现树的构建
	 * @param inorder
	 * @param postorder
	 * @return
	 */
    public TreeNode buildTree(int[] inorder, int[] postorder) {
    	int inLen = inorder.length;
    	int posLen = postorder.length;
    	if(inLen == 0 || posLen == 0 || inLen != posLen) {
    		return null;
    	}
    	// 递归建树
    	TreeNode root = reBuildTree(inorder, postorder, 0, inLen - 1, 0, posLen - 1);
    	return root;
    }
    
    private TreeNode reBuildTree(int[] inorder, int[] postorder, 
    							 int inStart, int inEnd, 
    							 int postStart, int postEnd) {
		// TODO Auto-generated method stub
    	if(inStart > inEnd || postStart > postEnd) {
    		return null;
    	}
    	int rootVal = postorder[postEnd];
    	TreeNode rootNode = new TreeNode(postorder[postEnd]);
    	
    	if(postStart == postEnd) {
    		return rootNode;
    	}
    	
    	int inPos = findInorder(inorder, inStart, inEnd, rootVal);
    	int leftTreeNum = inPos - inStart;

    	rootNode.left = reBuildTree(inorder, postorder, inStart, inPos - 1, postStart, postStart + leftTreeNum - 1);
    	rootNode.right = reBuildTree(inorder, postorder, inPos + 1, inEnd, postStart + leftTreeNum, postEnd - 1);
		return rootNode;
	}

	private int findInorder(int[] inorder, int inStart, int inEnd, int rootVal) {
		// TODO Auto-generated method stub
		for(int i = inStart; i <= inEnd; ++i) {
			if(inorder[i] == rootVal) {
				return i;
			}
		}
		return -1;
	}
	
	public static void main(String[] args) {
		int[] inorder = {2, 1};
		int[] postorder = {2, 1};
		MidPosBuildTree bt = new MidPosBuildTree();
		TreeNode head = bt.buildTree(inorder, postorder);
	}

}

Oracle数据库安装及配置(Oracle19c) Windows 10安装Oracle 19c教程 阅读详情

相关推荐

获取B站某用户更多的关注数和粉丝数

获取B站某用户更多的关注数和粉丝数 相关记录 一、 前言 B 站最多只能翻 5 页用户的关注数和粉丝数,如何能够看到更多呢。 方法我也是从网上翻来的,记载博客里,算是我研究过这个话题了。 二、需要的东西 关注数的 api https://api.bilibili.com/x/relation/followings?vmid=2884629&pn=1&ps=20&order=desc&jsonp=jsonp 关注者(粉丝)的 api https://api.bilibili.

Enderman_xiaohei的博客 4824

从中序与后序遍历序列构造二叉树(递归法+模拟)

题目: 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 题解: 已知中序,后序,即可唯一确定一棵二叉树,关键点抓住后序的第一个元素是当前根节点,因而我们可以将序列进行切割,递归到只有一个元素时,构造节点。 具体解释贴在代码里 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;

qq_42836930的博客 688

DAC60501与STM32的I2C通信实战:从寄存器配置到电压输出

本文详细介绍了如何使用STM32通过I2C通信驱动DAC60501数模转换器,实现精确的模拟电压输出。内容涵盖从硬件连接到软件模拟I2C驱动编写,再到DAC寄存器配置与电压计算的全流程实战指南,并提供了关键的驱动实例代码和常见问题调试技巧,帮助开发者快速掌握这一嵌入式开发中的实用技能。

weixin_29197835的博客 369

前(后)序+中序遍历序列构建二叉树——递归方法分析及实现

问题来源 https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/。 从前序和中序遍历序列构建二叉树(递归解法) 假定树中没有重复元素。 对于任意一颗树而言,前序遍历的形式总是 [ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ] 即根节点总是前序遍历中的第一个节点。 而中序遍历的形式总是 [ [左子树的中序遍历结果], 根节点, [右子树的中序遍历结果] ]

W24的博客 1376

Open3D 教程学习指南 (持续整理)

Open3D 是一个开源库,旨在为 3D 数据处理提供高效且易用的工具。它由 Intel 开发和维护,支持多种 3D 数据处理任务,如点云处理、3D 重建、几何处理和可视化等。

Chase Blog 5933

人工势场法在自动驾驶避障中的实践与优化

本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。

weixin_29208327的博客 927

2021-10-21 106. 从中序与后序遍历序列构造二叉树(递归)

注: 题目: 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出: 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 题解: 思路 首先解决这道题我们需要明确给定一棵二叉树,我们是如何对其进行中序遍历与后序遍历的: 中序遍历的顺序是每次遍历左孩子,再遍历根节点,最后遍历右孩子。 后序遍历的顺序

TABE_的博客 315

中国传媒大学计算机考研初复试经验贴

中传的计算机专业考研的话主要分为两大学院:计网学院和国重,大部分专业在计网学院。

DoKiDoK的博客 1564

从中序与后序遍历序列构造二叉树(递归实现)

题目 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 注意点 1、递归思路 根据后序遍历确定根节点;(最后一个) 然后根据中序遍历确定左子树和右子树; 循环以上步骤。 参考:从前序与中序遍历序列构造二叉树(递归实现) 实现 /** * Definition for a binary tree node. * pu

weixin_43857345的博客 1811

ArcGIS栅格数据像元值与坐标值提取及Excel导出全流程解析

本文详细解析了使用ArcGIS将栅格数据批量提取像元值与坐标值并导出至Excel的全流程。通过“栅格转点”、“添加XY坐标”和“表转Excel”三大核心步骤,无需编程即可自动化处理遥感、环境等领域的空间数据,有效提升数据分析效率。

zeta9的博客 366

广东电信兆能Z82盒子救砖记:手把手教你用U盘强刷HI3798MV100固件(附短接图)

本文详细介绍了广东电信兆能Z82盒子变砖后的救砖方法,重点讲解了使用U盘强刷HI3798MV100固件的全流程,包括诊断、准备工作、短接操作及刷机后的优化设置。特别针对m8233主板和8188无线方案的机型,提供了实用的短接图和操作技巧,帮助用户成功恢复设备。

weixin_30325487的博客 404

从中序和后序遍历构造二叉树(递归)

题目描述 给出一棵树的中序遍历和后序遍历,请构造这颗二叉树 注意: 保证给出的树中不存在重复的节点 思路 思路很容易想,但是能不能顺利写出代码来又是另外一回事。 我使用了开区间 后序遍历的左右子树的区分应该由中序遍历得到的左子树长度来固定,而不是由中序遍历左子树的下标。 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution

stdleohao的博客 535

EB配置I2c - 实现与PF8200的读写操作

①,基于硬件实现IIC通信(硬件GPIO引脚配置为I2c复用引脚)②,基于软件模拟IO实现IIC通信(代码控制SDA和SCL两个IO引脚的电平来模拟IIC时序)本文章基于64pin的恩智浦S32K146型号的芯片作为主机,从机是NXP的供电芯片。在本次实验中,我们将以使用EB工具链来配置硬件IIC通信。1,EB配置2,代码编写3,测试验证话不多说,走你~写操作比较简单,只需要申明一个I2c配置结构体变量即可。

weixin_48498880的博客 3768

★【递归】【构造二叉树】Leetcode 106.从中序与后序遍历序列构造二叉树

★【递归】【构造二叉树】Leetcode 106.从中序与后序遍历序列构造二叉树

prince0520的博客 1216

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

leetcode106. 从中序与后序遍历序列构造二叉树/递归

文章目录题目:106. 从中序与后序遍历序列构造二叉树基本思想:递归构建 题目:106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如: 给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 来源:力扣(LeetCode) 链接:https://leetcod

yyf_blog 508

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

【问题描述】[中等] 【解答思路】 public class Solution { public TreeNode buildTree(int[] inorder, int[] postorder) { int inLen = inorder.length; int postLen = postorder.length; // 特判 if (inLen != postLen) { throw new R

dadongwudi的博客 316

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【LeetCode】105. 从前序与中序遍历序列构造二叉树,106. 从中序与后序遍历序列构造二叉树,144. 二叉树的前序遍历非递归实现,94. 二叉树的中序遍历非递归实现,145. 二叉树的后序

输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的。给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历。给定一个二叉树的根节点 root ,返回 它的 中序 遍历。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。,请构造二叉树并返回其根节点。

fight_p的博客 1742

106从中序与后序遍历序列构造二叉树(递归)

1、题目描述 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 2、示例 中序遍历 inorder =[9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 3、题解 基本思想:递归,不断以根节点拆分出左子树的后序中...

Revendell的博客 293

leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法

如题: 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder =[9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 这道题明显是有套路的,如果你还不会,说明你是第一次遇到,还好现在...

fuyuande的博客 1416

105从前序与中序遍历序列构造二叉树 && 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

2401_83915900的博客 989

递归+二叉树的前中后序遍历转换 105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 解题 递归得到每个子节点,返回节点; 注意点 右子树的节点为getnode(preorder,inorder,i+t-start+1,t+1,end);

BLUEsang的博客 233

【递归】106. 从中序与后序遍历序列构造二叉树

【递归】106. 从中序与后序遍历序列构造二叉树

qq_44653420的博客 412

LeetCode·106.从中序与后序遍历序列构造二叉树·递归

递归

m0_64560763的博客 193

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

根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder =[9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 递归求解 /** * Definition for a bi...

Evildoer_llc的博客 209

【LeetCode】106. 从中序与后序遍历序列构造二叉树(递归、二叉树、中序后序建二叉树)

经典二叉树问题,建议搭配前序中序建树一起看,附带链接:105. 从前序与中序遍历序列构造二叉树 题目 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 中序后序唯一确定一棵二叉树 和105题类似,建议先看看105题的解法,下面我会直接给出代码 先看看中序遍历和后序遍历: 中序遍历:左右根 后序遍历:左右根 时

Miiiiiiiiiii的博客 209

中序与后序遍历序列构造二叉树(Lc106)——递归

中序与后序遍历序列构造二叉树(Lc106)——递归

qq_51626500的博客 385
上一篇: 6. Z 字形变换
下一篇: 113. 路径总和 II(递归)
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值