问题描述:
已知一个树的前序和中序,求后序。

样例:

样例输入:

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;
}

树(前序,中序,后序)相关推荐

  1. 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...

    二叉树的先序,中序,后序遍历以及线索二叉树的遍历 (2008-05-04 17:52:49) 标签: 杂谈 C++ 二叉树的先序,中序,后序遍历以及线索二叉树的遍历 头文件 //*********** ...

  2. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

    a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...

  3. 树的先序/中序/后序遍历

    树的结构如下: 先序(深度搜索遍历DFS):先顶点,再左边节点,接着右边节点 前序结果:ABDEHICFG 中序:先左边节点,再顶点,最后右边节点 中序结果:DBHEIAFCG 后序:先左边节点,然后 ...

  4. 前序中序、中序后序以及前序后序构造二叉树

    文章目录 前序中序 中序后序 前序后序 定义的树节点如下, class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { ...

  5. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

  6. 通过前序中序,中序后序,前序后序来构造一二叉树

    前序中序,以及中序后序可以确定唯一一颗二叉树,而前序后续是可以有多种情况,因为仅仅前序后续是无法确定根节点左右子树的问题: 首先解决通过前序和中序来构建一颗二叉树的问题: 前序=根节点+左子树+右子树 ...

  7. 【二叉树Java】二叉树遍历前序中序后序遍历的非递归写法

    本文主要介绍二叉树前序中序后序遍历的非递归写法 在探讨如何写出二叉树的前序中序后序遍历代码之前,我们先来明确一个问题,前序中序后序遍历根据什么区分? 二叉树的前序中序后序遍历,是相较根节点说的.最先遍 ...

  8. 二叉树的前序中序后序遍历java代码实现

    1.前序遍历概述 前序遍历(VLR) 是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1 ...

  9. 二叉树中前序 中序 后序的互推

    最近开始复习数据结构,就从二叉树开始吧 1.复习前序 中序 后序 结构: 前序:根(左子树)(右子树) 中序:(左子树)根 (右子树) 后序:(左子树)(右子树)根 2. 前序+中序->后序 由 ...

  10. C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)

    C++用类实现二叉树的创建,前序中序后序遍历(附完整代码) 前序.中序.后序遍历 直接上代码 前序.中序.后序遍历 二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法.前序遍历的顺序为" ...

最新文章

  1. python的优点-Python语言的优势有哪些?
  2. vuex ajax dev,vuex中使用ajax的话如何维护状态?
  3. 超全!Python获取某一日期是“星期几”的6种方法!
  4. IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码
  5. DIV+CSS布局图片加阴影效果方法
  6. System Test GIS压力测试利器
  7. 手把手教你用ESP32制作一个游戏机
  8. python 百度百科 爬虫_爬虫爬取百度百科数据
  9. 数据库:MySQL、HBase、ElasticSearch三者对比
  10. 作者:姚前(1970-),男,中国人民银行科技司教授级高级工程师
  11. redis学习-NoSQL数据库的四大分类
  12. CSS3 制作魔方 - 相关立体样式
  13. python编程:从入门到实践学习笔记-文件和异常
  14. 浅谈Spring中JDK动态代理与CGLIB动态代理
  15. nohup的程序能不能再转到前台查看啊?_小程序开发之路入门
  16. 阿里云OS和Android之争100问
  17. 移动硬盘提示文件或目录损坏且无法读取怎么办
  18. JMeter 安装教程
  19. 月度行业报告模板说明
  20. org.springframework.jdbc.BadSqlGrammarException: Error updating database

热门文章

  1. 31.iPhone的磁场传感器简单介绍
  2. 新零售SaaS架构:多租户系统架构设计
  3. 咸阳无房证明网上办理指南
  4. 面料软件_面料管理系统_面料订单管理
  5. 华为Meta30 Pro怎么禁用系统更新
  6. OpenCV基础入门【C++及python语言】
  7. Apple ASA归因技术支持
  8. linux qt中文输入法,解决 Ubuntu 14.04 下 Qt5 中文显示和中文输入法问题
  9. python 图像格式转换文件夹下 jpg 转 bmp | 目录遍历
  10. Cesium学习笔记