ACM 数据结构-并查集 HDU 1710 Binary Tree Traversals .

原创 2016年05月30日 15:07:26
Problem Description
A binary tree is a finite set of vertices that is either empty or consists of a root r and two disjoint binary trees called the left and right subtrees. There are three most important ways in which the vertices of a binary tree can be systematically traversed or ordered. They are preorder, inorder and postorder. Let T be a binary tree with root r and subtrees T1,T2.

In a preorder traversal of the vertices of T, we visit the root r followed by visiting the vertices of T1 in preorder, then the vertices of T2 in preorder.

In an inorder traversal of the vertices of T, we visit the vertices of T1 in inorder, then the root r, followed by the vertices of T2 in inorder.

In a postorder traversal of the vertices of T, we visit the vertices of T1 in postorder, then the vertices of T2 in postorder and finally we visit r.

Now you are given the preorder sequence and inorder sequence of a certain binary tree. Try to find out its postorder sequence.
 

Input
The input contains several test cases. The first line of each test case contains a single integer n (1<=n<=1000), the number of vertices of the binary tree. Followed by two lines, respectively indicating the preorder sequence and inorder sequence. You can assume they are always correspond to a exclusive binary tree.
 

Output
For each test case print a single line specifying the corresponding postorder sequence.
 

Sample Input
9 1 2 4 7 3 5 8 9 6 4 7 2 1 8 5 9 3 6
 

Sample Output
7 4 2 8 9 5 6 3 1
 
首先根据前序列,确定根为1,。之后中序列1左边的为左分支,右边的为右分支。这样递归
#include<iostream>using namespace std;int t1[1001],t2[1001];void sousuo(int a,int b,int n,int flag){ if(n==1)//如果存在左子树或右子树就直接输出 { printf("%d ",t1[a]); return ; } else if(n<=0)//如果不存在左子树或右子树就返回上一层 return ; int i;//继续罚分为左子树和右子树 for(i=0;t1[a]!=t2[b+i];i++) ;//找到罚分点也就是根节点 sousuo(a+1,b,i,0);//左子树的遍历 sousuo(a+i+1,b+i+1,n-i-1,0);//右子树的遍历 if(flag==1)//最原始的跟节点 printf("%d",t1[a]); else//一般的根节点 printf("%d ",t1[a]);}int main(){ int n,i; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&t1[i]);//t1中存的是前序 for(i=1;i<=n;i++)//t2中存的中序 scanf("%d",&t2[i]); sousuo(1,1,n,1); printf("\n"); } return 0;}
版权声明:本文为博主原创文章,未经博主允许不得转载。

【并查集专题】【HDU】

How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...
  • zy691357966
  • zy691357966
  • 2014年11月29日 18:34
  • 1943

ACM常用数据结构小结与实现

应当说这段时间学习了很多的数据结构,也到了一个总结的时候。fotile96的这篇Blog非常值得推荐,我达不到这个高度,只能给自己和队友做些简单的归纳。   树状数组   非常简单的数据结构,...
  • mengxingyuanlove
  • mengxingyuanlove
  • 2015年06月09日 21:02
  • 3146

ACM-并查集之畅通工程——hdu1232

ACM 并查集 畅通工程 hdu1232 并查集理解
  • lx417147512
  • lx417147512
  • 2014年04月16日 09:21
  • 2225

HDU1710 二叉树的前、中、后遍历

Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe...
  • u013068502
  • u013068502
  • 2015年08月01日 09:28
  • 710

HDU--1213并查集

题目传送门:HDU--1213 //题意:ignatius过生日,客人来到,他想知道他需要准备多少张桌子。然而一张桌子上面只能坐上相互熟悉的人, //其中熟悉可定义成为A与B认识,B与C认...
  • xiaotan1314
  • xiaotan1314
  • 2015年09月14日 19:33
  • 541

ACM-数据结构-并查集

ACM竞赛中,并查集(DisjointSets)这个数据结构经常使用。顾名思义,并查集即表示集合,并且支持快速查找、合并操作。 并查集如何表示一个集合?它借助树的思想,将一个集合看成一棵有根树。那又如...
  • u011787119
  • u011787119
  • 2015年07月10日 20:53
  • 960

杭电1710 Binary Tree Traversals(二叉树的遍历)

Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/...
  • u013634213
  • u013634213
  • 2014年11月29日 13:56
  • 786

hdoj 1710 Binary Tree Traversals 【二叉树由前序和中序求后序】

Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O...
  • chenzhenyu123456
  • chenzhenyu123456
  • 2015年06月30日 09:22
  • 464

【HDU5573 2015上海赛区B】【构造 二进制思想】Binary Tree 二叉树上走m层加减数使得最后权值恰为n

Binary Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota...
  • snowy_smile
  • snowy_smile
  • 2015年11月29日 11:47
  • 940

数据结构之二叉树的遍历 HDU1710 Binary Tree Traversals

Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/...
  • lxx_nico
  • lxx_nico
  • 2014年11月01日 09:19
  • 435
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACM 数据结构-并查集 HDU 1710 Binary Tree Traversals .
举报原因:
原因补充:

(最多只允许输入30个字)