输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如输入前序遍历序列{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,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- 根据二叉树前序遍历和中序遍历重建二叉树
剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3, ...
- pat根据中序遍历和先序遍历_[leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树...
[题目描述] 根据前序遍历和中序遍历树构造二叉树. 在线评测地址: 九章算法 - 帮助更多中国人找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧www.jiuzhang.com [样例 ...
- c++ 删除二叉树的子树_数据结构—树|二叉树|前序遍历、中序遍历、后序遍历【图解实现】...
点击蓝字关注我们 AI研习图书馆,发现不一样的精彩世界 数据 结构 二叉树的遍历 一.树 在谈二叉树的知识点之前,我们首先来看一下树和图的基本概念.树:不包含回路的连通无向图,树是一种简单的非线性结构 ...
- 二叉树:通过前序遍历与中序遍历序列输出二叉树的后序遍历序列
题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历: ...
- 【二叉树】根据后续和中序遍历输出前序遍历 [建树+非建树做法]
F . 案例 4-1.1:根据后续和中序遍历输出前序遍历 Description 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. Input 第一行给出正整数N (≤3 ...
- 二叉树的前序遍历,中序遍历,后序遍历-详解-配套例题
二叉树作为数据结构中一种简单而且重要的数据结构,他的存储结构和算法都相对比较简单,因此他也显得特别重要,因为很多问题都可以抽象为二叉树的问题. 在这里我们对于二叉树的基本概念不做详细介绍,我们这里主要 ...
- 【二叉树】由后序遍历和中序遍历推出前序遍历
题目描述:根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点的个数.随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果 ...
- 二叉树、前序遍历、中序遍历、后序遍历
一.树 在谈二叉树前先谈下树和图的概念 树:不包含回路的连通无向图(树是一种简单的非线性结构) 树有着不包含回路这个特点,所以树就被赋予了很多特性 1.一棵树中任意两个结点有且仅有唯一的一条路径连通 ...
最新文章
- PHPMailer类 发送邮件
- R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标
- 能量视角下的GAN模型(二):GAN=“分析”+“采样”
- html超文本链接本页面,从HTML语言到网上家园 第三章 超文本链接(1)-网页设计,HTML/CSS...
- P3067 [USACO12OPEN]Balanced Cow Subsets G 折半搜索
- java中静态代码块的用法 static用法详解
- Android实用代码七段(二)
- 常见的linux系统故障,linux常见的系统故障排除
- Python文件操作与matplotlib数据可视化案例一则
- 应届生如何自学 Java、成功拿下腾讯 Offer?
- Java读取URL到字符串
- php连接mysql实例留言板_一个php留言板实例详解(附源码下载)
- 扫描证件识别应用最为广泛
- 让电脑使用手机的摄像头做直播
- 「React 基础」组件生命周期函数componentDidMount()介绍
- win10快捷键【常用】桌面切换等快捷键
- 数仓可视化,低代码开发平台
- amd64的镜像兼容amd和intel的cpu
- word报错“您的组织策略阻止我们为您完成此操作”的解决方法
- 2020年度总结 | 葡萄城软件开发技术回顾
热门文章
- 数据传输服务 DTS > 数据订阅 > 数据订阅(新版) > 创建RDS MySQL数据订阅通道(新版)
- 阿里程序员发70多万年终奖表示略感失望,网友:不要的话请给我!
- Java基础学习总结(145)——Java SPI(Service Provider Interface)简介
- 分布式系统中的幂等设计
- Mysql学习总结(36)——Mysql查询优化
- java读取文件buffered_关于Java中使用BufferedReader读取文件的疑惑
- java 任务_Java-定时任务
- Redis数据安全与性能保障——redis读书笔记4
- 受Struts2漏洞影响 思科正审查其主要产品安全性 CVE-2017-9805已有主动攻击
- CHIL-SQL-INNER JOIN 关键字