重建二叉树

二叉树的重建 在http://blog.youkuaiyun.com/hacker_zhidian/article/details/60586445这篇文章中我们看了一下二叉树的四种遍历方式,接下来我们看一下关于二叉树的重建问题,什么叫二叉树的重建呢?比方说给你一棵二叉树的前序遍历顺序和中序遍历顺序,要求你求出这颗二叉树的后序遍历顺序。来看一下个具体的例题数据,给定一个二叉树的信息:二叉树节点数: 5 前序遍历顺序:1 2 阅读详情

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

我们来看一下前序遍历,和中序遍历的结果
在这里插入图片描述
看到树我们“一般”想想到递归。基本思想就是确定根节点然后再添加左右子树,而左右子树又是一个独立的树,来看代码;

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
import java.util.Arrays;
public class Solution {
    public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
        if(pre.length == 0){
            return null;
        }
        
        int rootVal = pre[0];
        if(pre.length == 1){
            return new TreeNode(rootVal);
        }
        
        int index = 0; //找到中序遍历中的根节点位置,以至于确定左右子树的中序遍历
        for(int i = 0;i < in.length;i++){  
            if(in[i] == rootVal){
                index = i;
                break;
            }
        }
        
        TreeNode root = new TreeNode(rootVal);
        root.left = reConstructBinaryTree(Arrays.copyOfRange(pre,1,index+1),Arrays.copyOfRange(in,0,index));
        root.right = reConstructBinaryTree(Arrays.copyOfRange(pre,index+1,pre.length),Arrays.copyOfRange(in,index+1,in.length));
      
        return root;
    }
}
NYOJ--重建二叉树 二叉树遍历,先序和中序重建二叉树,后序和中序重建二叉树等 阅读详情

相关推荐

Python:重建二叉树

牛客网上的剑指 offer的在线编程: 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 # -*- coding:utf-8 -*- ''' 重建二叉树 题目描述 输入某二叉树的

Lynette_bb的博客 3950

【算法专题】重建二叉树

重建二叉树总结 概述 重建二叉树分为三种类型: (1)中序遍历+前序遍历/后序遍历 重建二叉树; (2)中序遍历+层序遍历 重建二叉树; (3)前序遍历+给定叶节点 重建二叉树。 下面分别给出这三类重建二叉树的讲解。 类型一:中序+前序/后序 AcWing 1631. 后序遍历 问题描述 问题链接:AcWing 1631. 后序遍历 分析 对于给定前序遍历的区间[pl, pr]和中序遍历的区间[il, ir],则待构造的树的根节点为preorder[pl],

weixin_42638946的博客 5180

超级详细!!!新手使用AutoDL跑深度学习(MixVPR项目)的学习记录

新手第一次在AutoDL上跑深度学习的实验,遇到一些问题,简单记录一下。如果大家发现问题,欢迎和我讨论。

weixin_45152283的博客 5万+

二叉树——重建二叉树

二叉树——重建二叉树 例如,某二叉树为: 前序遍历为:(4,7,9,2,1,5,6) 中序遍历为:(7,9,4,1,2,6,5) 后序遍历为:(9,7,1,6,5,2,4) 1.前序遍历+中序遍历 =&amp;gt; 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 代码 #include &amp;lt;iostream&amp;gt; #in...

hh66__66hh的博客 3800

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

STM32 DMA串口重定向printf:高效调试与性能优化实战

本文详细介绍了STM32 DMA串口重定向printf的实现方法与性能优势。通过对比传统方式的CPU高占用问题,阐述了DMA技术如何实现高效数据传输,大幅降低CPU负载。文章包含完整的代码实现、缓冲区管理技巧及实战调试方案,帮助开发者优化嵌入式系统调试效率。

lake5的博客 98

二叉树重建

二叉树重建系列二叉树重建根据不同遍历的序列重建根据数组或者链表重建 二叉树重建 二叉树重建的关键思想是递归重建。 根据不同遍历的序列重建 从前序与中序遍历序列中重建二叉树(LeetCode 105) 题目描述: 分析:前序遍历是每次先遍历根节点,在遍历左子树和右子树。因此前序遍历序列的第一个元素就是根节点,然后递归建立左右子树。 代码: class Solution { public: TreeNode* generate(vector<int>& preorder,int

l_s_2020的博客 274

CMap与L1000技术解析:基因表达数据在药物发现中的应用

本文深入解析了CMap(连接图)与L1000技术在药物发现中的核心应用。CMap通过构建基因表达“关系网”,实现基于模式匹配的药物重定位;L1000技术则以低成本、高通量方式生成关键基因表达数据,支撑了LINCS超级数据库。文章以CLUE平台为例,手把手演示了如何利用疾病基因表达签名逆向筛选潜在治疗化合物,并拓展了其在解析药物机制、预测副作用等多场景下的价值。

weixin_29207533的博客 727

二叉树重建(根据后序中序重建二叉树)

1:根据二叉树的后续序列和中序序列可以确定唯一的二叉树; 2:二叉树遍历顺序       前序遍历;根节点-->左子树-->右子树;    中序遍历:左子树-->根节点-->右子树;    后序遍历:左子树-->右子树-->根节点; 下面重建二叉树之后再层序遍历 #include #include #include int post[31],in[31]; int m,ele

计科菜鸟的天地. 1553

手机直连低轨卫星通信:架构、关键技术和未来展望

【摘 要】借助低轨卫星星座全时全域覆盖优势,手机直连卫星通信预期成为6G重要特征之一。首先介绍了手机直连卫星的测试验证、标准化与商业项目发展现状。其次,介绍了基于透明转发、部分可再生处理、完全可再生处理、集成接入和回传的四种手机直连低轨卫星网络架构及组网方式。通过分析手机直连低轨卫星网络场景下高移动性与大传输时延等带来的接入与传输问题,提出对地面移动通信体制进行适应性改进的关键技术方案。最后,探讨了未来手机直连低轨卫星发展发向和潜在思路。通过上述阐述与分析,提供未来发展手机直连低轨卫星通信的可行路径。【关

fzq0625的博客 1707

Spring Boot入门(02):【教程】轻松搭建Spring Boot开发环境,启动你的第一个Web项目!

快速搭建开发环境和启动项目是每个开发人员必备的技能。本文将为您提供一些简单易懂的方法和技巧,以帮助您快速搭建开发环境和启动项目。我们将介绍如何选择适合您的开发工具、配置您的操作系统、安装必要的软件包和依赖项,并开始编写您的第一个应用程序。无论您是一位新手还是一位经验丰富的开发人员,本文都会给您提供有用的信息和实用的建议,让您在最短时间内快速搭建和启动开发项目。

**My Coding Family** 22万+

重建二叉树 python_重建二叉树

题目:输入某二叉树的前序遍历黑夜中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历中都不包含重复的数字。例如输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历 {4, 7, 2, 1, 5, 3, 8, 6},则重建出该二叉树。C#实现:publicclassBinaryTreeNode{intvalue;BinaryTreeNodeleft;Binar...

weixin_39908616的博客 74

无限泛化!AI背景文字识别,腾讯文字六宫格

本文介绍了生成大规模文字验证码数据集的方法,通过使用上百种字体和2万+字库,结合随机背景和数十种图像增强技术,生成了2000万+的多样化样本。该方法采用二阶段训练策略,确保模型对字体、形态、形变等具有强泛化能力,可适配腾讯、咸鱼等多种平台的文字验证码识别,包括生僻字和复杂形变情况。生成的模型在多种验证码场景下表现优异,但强调该方法仅用于技术研究,严禁非法用途。

码王吴彦祖的博客 562

由中根序列和后根序列重建二叉树_二叉树的重建

重建二叉树引言问题:现有二叉树的后序遍历序列与中序遍历序列,能否求原二叉树?答案是肯定的,并且前序与中序也可以得到原二叉树。本文就如何使用这两种序列组合如何重建二叉树进行讨论。首先,定义二叉树的遍历。二叉树的遍历对于一个二叉树的遍历,有以下原则:- 遇到一个根节点,先访问左节点,再访问右节点而前,后,中序遍历分别指根节点在访问左右节点之前,之间,之后。如何重建?那么根据二叉树遍历的定义,对一个最简...

weixin_39528366的博客 1054

ROS2 机械臂末端刀具执行曲面路径规划入门教程

Noether工具路径规划系统摘要 Noether是一款用于网格曲面刀具路径规划的软件,支持喷涂、打磨、检测等机器人工艺流程。其核心流程分为三步:1)网格修改(平滑、分割等预处理);2)刀具路径规划(生成有序路径点序列);3)刀具路径修改(姿态调整等后期处理)。系统提供栅格规划和边界规划两种模式,支持自定义扩展。配套GUI工具可配置完整流程,包含网格处理、路径生成和可视化功能。通过示例演示了多组件网格处理、拼图边缘铣削等典型应用场景,并指导用户进行插件开发,实现圆柱体提取、摄像机悬停等定制化功能。系统采用模

机器人控制与仿真应用 916

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

重建二叉树【转载】

二叉树遍历方式: 前序遍历【根左右】; 中序遍历【左根右】; 后续遍历【左右根】; 重建二叉树: 前序+中序;2. 中序+后续;3.前序+后续; 注意: 第3种情况无法重建惟一二叉树的,因为无法知道结点是属于左子树还是右子树; 此文以中序与后续遍历结果为例——重建二叉树。 如图,例子来说明。知道中序和后序遍历,画二叉树和写出前序遍历。 从后序遍历知道,最后一个必然是根节点,因此A是根。再...

Jensen Lee的博客 613

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

重建二叉树-JAVA实现

重建二叉树-JAVA实现二叉树的遍历方式题目描述实现流程代码实现拓展 二叉树的遍历方式 二叉树的遍历方式分为前序遍历,中序遍历,后序遍历; 具体相关概念请参考博客:二叉树的先序、中序、后序遍历序列 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。(该题引自剑指offer经典例题) 实现流程 根据前序遍历和中序遍历

ldzn 283

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 动态代理
下一篇: 【详细】二叉树的基本操作
Young-_-D
博客等级 码龄8年 62粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值