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

与上一篇输入某二叉树的中序遍历和后序遍历的结果,请重建出该二叉树的问题解决思想完全相同。

唯一区别前序遍历的第一个节点为根节点,后序遍历的最后一个为根节点。

代码实现如下:

TreeNode* reConstructBinaryTree(vector<int> pre, vector<int> vin)
{if (pre.size() != vin.size()  || pre.size() == 0)return NULL;int root = pre[0];//前序的第一个节点为根节点r,在中序中找到该节点r,//r前的为左子树,r后的为右子树int i = 0;while (!vin.empty()){if (vin[i] == pre[0])break;i++;}vector<int> pre_left, pre_right, vin_left, vin_right;TreeNode* node = new TreeNode(root);int j = 0;while (j < i){vin_left.push_back(vin[j]);//将中序的左子树放进数组pre_left.push_back(pre[j + 1]);//将前序的左子树放进数组j++;}j = i + 1;while (j < pre.size()){vin_right.push_back(vin[j]);//将中序的右子树放进数组pre_right.push_back(pre[j]);//将前序的右子树放进数组j++;}node->left = reConstructBinaryTree(pre_left, vin_left);node->right = reConstructBinaryTree(pre_right, vin_right);return node;
}

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。相关推荐

  1. 根据二叉树的前序遍历和中序遍历重建二叉树

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

  2. 根据二叉树前序遍历和中序遍历重建二叉树

    剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3, ...

  3. pat根据中序遍历和先序遍历_[leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树...

    [题目描述] 根据前序遍历和中序遍历树构造二叉树. 在线评测地址: 九章算法 - 帮助更多中国人找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧​www.jiuzhang.com [样例 ...

  4. c++ 删除二叉树的子树_数据结构—树|二叉树|前序遍历、中序遍历、后序遍历【图解实现】...

    点击蓝字关注我们 AI研习图书馆,发现不一样的精彩世界 数据 结构 二叉树的遍历 一.树 在谈二叉树的知识点之前,我们首先来看一下树和图的基本概念.树:不包含回路的连通无向图,树是一种简单的非线性结构 ...

  5. 二叉树:通过前序遍历与中序遍历序列输出二叉树的后序遍历序列

    题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历: ...

  6. 【二叉树】根据后续和中序遍历输出前序遍历 [建树+非建树做法]

    F . 案例 4-1.1:根据后续和中序遍历输出前序遍历 Description 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. Input 第一行给出正整数N (≤3 ...

  7. 二叉树的前序遍历,中序遍历,后序遍历-详解-配套例题

    二叉树作为数据结构中一种简单而且重要的数据结构,他的存储结构和算法都相对比较简单,因此他也显得特别重要,因为很多问题都可以抽象为二叉树的问题. 在这里我们对于二叉树的基本概念不做详细介绍,我们这里主要 ...

  8. 【二叉树】由后序遍历和中序遍历推出前序遍历

    题目描述:根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点的个数.随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果 ...

  9. 二叉树、前序遍历、中序遍历、后序遍历

    一.树 在谈二叉树前先谈下树和图的概念 树:不包含回路的连通无向图(树是一种简单的非线性结构) 树有着不包含回路这个特点,所以树就被赋予了很多特性 1.一棵树中任意两个结点有且仅有唯一的一条路径连通 ...

最新文章

  1. PHPMailer类 发送邮件
  2. R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标
  3. 能量视角下的GAN模型(二):GAN=“分析”+“采样”
  4. html超文本链接本页面,从HTML语言到网上家园 第三章 超文本链接(1)-网页设计,HTML/CSS...
  5. P3067 [USACO12OPEN]Balanced Cow Subsets G 折半搜索
  6. java中静态代码块的用法 static用法详解
  7. Android实用代码七段(二)
  8. 常见的linux系统故障,linux常见的系统故障排除
  9. Python文件操作与matplotlib数据可视化案例一则
  10. 应届生如何自学 Java、成功拿下腾讯 Offer?
  11. Java读取URL到字符串
  12. php连接mysql实例留言板_一个php留言板实例详解(附源码下载)
  13. 扫描证件识别应用最为广泛
  14. 让电脑使用手机的摄像头做直播
  15. 「React 基础」组件生命周期函数componentDidMount()介绍
  16. win10快捷键【常用】桌面切换等快捷键
  17. 数仓可视化,低代码开发平台
  18. amd64的镜像兼容amd和intel的cpu
  19. word报错“您的组织策略阻止我们为您完成此操作”的解决方法
  20. 2020年度总结 | 葡萄城软件开发技术回顾

热门文章

  1. 数据传输服务 DTS > 数据订阅 > 数据订阅(新版) > 创建RDS MySQL数据订阅通道(新版)
  2. 阿里程序员发70多万年终奖表示略感失望,网友:不要的话请给我!
  3. Java基础学习总结(145)——Java SPI(Service Provider Interface)简介
  4. 分布式系统中的幂等设计
  5. Mysql学习总结(36)——Mysql查询优化
  6. java读取文件buffered_关于Java中使用BufferedReader读取文件的疑惑
  7. java 任务_Java-定时任务
  8. Redis数据安全与性能保障——redis读书笔记4
  9. 受Struts2漏洞影响 思科正审查其主要产品安全性 CVE-2017-9805已有主动攻击
  10. CHIL-SQL-INNER JOIN 关键字