hdu1710(Binary Tree Traversals)(二叉树遍历)
Binary Tree Traversals
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3475 Accepted Submission(s): 1555
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
Source
HDU 2007-Spring Programming Contest
给定一课二叉树的先序和中序,求这课数的后序:
采用划区域的方法,逐步缩小区间求解
分析:
代码:
1 /*hdu 1710 二叉树*/
2 //#define LOCAL
3 #include<cstdio>
4 #include<cstring>
5 using namespace std;
6 const int maxn=1005;
7 int aa[maxn],bb[maxn];
8 void dfs(int a,int b,int n,int tag)
9 {
10 int i;
11 if(n<=0)return ;
12 for(i=0;aa[a]!=bb[b+i];i++);
13 dfs(a+1,b,i,0);
14 dfs(a+i+1,b+i+1,n-i-1,0);
15 printf("%d",aa[a]);
16 if(!tag)printf(" ");
17 }
18 int main()
19 {
20 #ifdef LOCAL
21 freopen("test.in","r",stdin);
22 #endif
23 int n,i,k,pre;
24 while(scanf("%d",&n)!=EOF)
25 {
26 for(i=1;i<=n;i++)
27 scanf("%d",aa+i);
28 for(i=1;i<=n;i++)
29 scanf("%d",bb+i);
30 dfs(1,1,n,1);
31 printf("n");
32 }
33 return 0;
34 }
顺便做了一个二叉树知道其中两个序列求第三个序列的模板吧! 注意: 知道前序和后序是无法求出唯一二叉树的!
代码:
//这部分检验aa[]为先序,bb[]为中序
void dfs_1(char aa[],char bb[], int a,int b,int n)
{
if(n<=0)return ;
int i;
for(i=0;aa[a]!=bb[b+i];i++);
dfs_1(aa,bb,a+1,b,i); //左子树
dfs_1(aa,bb,a+i+1,b+i+1,n-i-1); //右子树
printf("%c",aa[a]);
}
//aa[]为中序,bb[]为后序
void dfs_3(char aa[],char bb[],int a,int b,int n)
{
if(n<=0)return ;
printf("%c",bb[b]);
int i;
for(i=0;bb[b]!=aa[a+i];i++);
dfs_3(aa,bb,a,b-n+i,i); //左子树
dfs_3(aa,bb,a+i+1,b-1,n-i-1); //右子树
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在CDH7.1.1中安装NiFi
- 重学前端(三)-聊聊我们的浏览器的那些事
- Saltstack_使用指南15_多master 3.1. 创建冗余的master3.2. 拷贝主master的key和配置到冗余的master3.3. 启动冗余ma
- Saltstack_使用指南16_syndic 3.1. 部署salt-master3.2. 其他配置与部署4.1. 部署salt-syndic4.2. syndic
- Centos7安装单机版MongoDB
- Saltstack_使用指南17_salt-ssh
- Saltstack_使用指南18_API
- Centos7安装单机版Redis
- Vue3 Composition-Api + TypeScript + 新型状态管理模式探索。
- Saltstack_实战指南01_系统规划
- Saltstack_实战指南02_各主机Pillar信息指定
- TypeScript基础看腻了?进阶实现智能类型推导的简化版Vuex,手把手带你实现。
- Linux下使用 github+hexo 搭建个人博客01-hexo搭建
- Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages
- Linux下使用 github+hexo 搭建个人博客03-hexo配置优化