树(前序,中序,后序)
问题描述:
已知一个树的前序和中序,求后序。
样例:
样例输入:
9
1 2 4 7 3 5 8 9 6
4 7 2 1 8 5 9 3 6
样例输出:
7 4 2 8 9 5 6 3 1
实现:
#include<iostream>
#include <string>
using namespace std;
const int maxn=1000;
struct Node
{int left;int right;int data;
};
Node Tree[maxn];
int N;
int pre[maxn];
int in[maxn];
int ROOT;
void init(int index)
{Tree[index].left=-1;Tree[index].right=-1;Tree[index].data=in[index];
}
void dfs(int parpent,int child)
{if(child<parpent){if(Tree[parpent].left==-1){init(child);Tree[parpent].left=child;}else{dfs(Tree[parpent].left,child);}}else{if(Tree[parpent].right==-1){init(child);Tree[parpent].right=child;}else{dfs(Tree[parpent].right,child);}}
}
void constructTree()
{int i,j;for(i=0;i<N;i++){if(in[i]==pre[0]){ROOT=i;init(ROOT);break;}}for(i=1;i<N;i++){for(j=0;j<N;j++){if(pre[i]==in[j]){dfs(ROOT,j);break;}}}
}
void printPost(int index)
{if(Tree[index].left!=-1){printPost(Tree[index].left);}if(Tree[index].right!=-1){printPost(Tree[index].right);}cout<<Tree[index].data;if(index!=ROOT)cout<<" ";
}
int main()
{int i;while(cin>>N){for(i=0;i<N;i++)cin>>pre[i];for(i=0;i<N;i++)cin>>in[i];constructTree();printPost(ROOT);cout<<endl;}return 0;
}
树(前序,中序,后序)相关推荐
- 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...
二叉树的先序,中序,后序遍历以及线索二叉树的遍历 (2008-05-04 17:52:49) 标签: 杂谈 C++ 二叉树的先序,中序,后序遍历以及线索二叉树的遍历 头文件 //*********** ...
- 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++
a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...
- 树的先序/中序/后序遍历
树的结构如下: 先序(深度搜索遍历DFS):先顶点,再左边节点,接着右边节点 前序结果:ABDEHICFG 中序:先左边节点,再顶点,最后右边节点 中序结果:DBHEIAFCG 后序:先左边节点,然后 ...
- 前序中序、中序后序以及前序后序构造二叉树
文章目录 前序中序 中序后序 前序后序 定义的树节点如下, class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { ...
- 序列化和反序列化二叉树 -----前序,中序,后序,层序
目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...
- 通过前序中序,中序后序,前序后序来构造一二叉树
前序中序,以及中序后序可以确定唯一一颗二叉树,而前序后续是可以有多种情况,因为仅仅前序后续是无法确定根节点左右子树的问题: 首先解决通过前序和中序来构建一颗二叉树的问题: 前序=根节点+左子树+右子树 ...
- 【二叉树Java】二叉树遍历前序中序后序遍历的非递归写法
本文主要介绍二叉树前序中序后序遍历的非递归写法 在探讨如何写出二叉树的前序中序后序遍历代码之前,我们先来明确一个问题,前序中序后序遍历根据什么区分? 二叉树的前序中序后序遍历,是相较根节点说的.最先遍 ...
- 二叉树的前序中序后序遍历java代码实现
1.前序遍历概述 前序遍历(VLR) 是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1 ...
- 二叉树中前序 中序 后序的互推
最近开始复习数据结构,就从二叉树开始吧 1.复习前序 中序 后序 结构: 前序:根(左子树)(右子树) 中序:(左子树)根 (右子树) 后序:(左子树)(右子树)根 2. 前序+中序->后序 由 ...
- C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)
C++用类实现二叉树的创建,前序中序后序遍历(附完整代码) 前序.中序.后序遍历 直接上代码 前序.中序.后序遍历 二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法.前序遍历的顺序为" ...
最新文章
- python的优点-Python语言的优势有哪些?
- vuex ajax dev,vuex中使用ajax的话如何维护状态?
- 超全!Python获取某一日期是“星期几”的6种方法!
- IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码
- DIV+CSS布局图片加阴影效果方法
- System Test GIS压力测试利器
- 手把手教你用ESP32制作一个游戏机
- python 百度百科 爬虫_爬虫爬取百度百科数据
- 数据库:MySQL、HBase、ElasticSearch三者对比
- 作者:姚前(1970-),男,中国人民银行科技司教授级高级工程师
- redis学习-NoSQL数据库的四大分类
- CSS3 制作魔方 - 相关立体样式
- python编程:从入门到实践学习笔记-文件和异常
- 浅谈Spring中JDK动态代理与CGLIB动态代理
- nohup的程序能不能再转到前台查看啊?_小程序开发之路入门
- 阿里云OS和Android之争100问
- 移动硬盘提示文件或目录损坏且无法读取怎么办
- JMeter 安装教程
- 月度行业报告模板说明
- org.springframework.jdbc.BadSqlGrammarException: Error updating database