九度oj 题目1078:二叉树遍历
题目1078:二叉树遍历
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5326
解决:3174
- 题目描述:
-
二叉树的前序、中序、后序遍历的定义:
前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;
中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;
后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。
- 输入:
-
两个字符串,其长度n均小于等于26。
第一行为前序遍历,第二行为中序遍历。
二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。
- 输出:
-
输入样例可能有多组,对于每组测试样例,
输出一行,为后序遍历的字符串。
- 样例输入:
-
ABC
BAC
FDXEAG
XDEFAG
- 样例输出:
-
BCA
XEDGAF 分析:先递归重建二叉树,在递归后序遍历。#include<iostream>
#include<cstdio>
#include<cstring>
#include <string>
using namespace std; typedef struct Node{
char data;
struct Node *lchild;
struct Node *rchild;
}BTree; string str1, str2;
void postOrder(BTree *T)
{
if(T!=NULL)
{if(T->lchild!=NULL)
postOrder(T->lchild);
if(T->rchild!=NULL)
postOrder(T->rchild);
cout<<T->data;
}
return;
} BTree *trans(int l1,int h1,int l2,int h2){
if(l1 > h1 || l2 > h2)//递归出口,不符合条件,直接返回空节点
return NULL;
int j = l2; while(str2[j] != str1[l1]){ j++; } //构造根节点
BTree *T=(BTree*)malloc(sizeof(BTree));
T->data=str2[j];
T->lchild=NULL;
T->rchild=NULL; T->lchild=trans(l1+,l1+j-l2,l2,j-); //返回左子树
T->rchild=trans(l1+j-l2+,h1,j+,h2); //返回右子树
return T;
} int main()
{ while(cin >> str1 >> str2)
{
int L1 = str1.length();
int L2 = str2.length();
BTree *T = trans(,L1-,,L2-);
postOrder(T);
cout << endl;
}
return ;
}#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; typedef struct Node{
char data;
struct Node *lchild;
struct Node *rchild;
}BTree; char str1[], str2[]; void postOrder(BTree *T){
if(T != NULL){
if(T->lchild != NULL)
postOrder(T->lchild);
if(T->rchild != NULL)
postOrder(T->rchild);
printf("%c", T->data);
}
return;
} BTree *trans(int l1,int h1,int l2,int h2){
if(l1 > h1 || l2 > h2)//递归出口,不符合条件,直接返回空节点
return NULL;
int j = l2; while(str2[j] != str1[l1]){ j++; } //构造根节点
BTree *T = (BTree*)malloc(sizeof(BTree));
T->data = str2[j];
T->lchild = NULL;
T->rchild = NULL; T->lchild = trans(l1+, l1+j-l2, l2, j-); //返回左子树
T->rchild = trans(l1+j-l2+, h1, j+, h2); //返回右子树
return T;
} int main()
{
int L1, L2;
while(scanf("%s %s", str1, str2) != EOF){
L1 = strlen(str1);
L2 = strlen(str2);
BTree *T = trans(,L1-,,L2-);
postOrder(T);
printf("\n");
}
return ;
}
九度oj 题目1078:二叉树遍历的更多相关文章
- 九度oj题目1181:遍历链表
题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2600 解决:1125 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1 ...
- 九度oj 题目1181:遍历链表
题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3483 解决:1465 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1 ...
- 九度OJ 1184:二叉树遍历 (二叉树)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3515 解决:1400 题目描述: 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的 ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
随机推荐
- Spring通过注解注入有参
1.通过注解方式注入有参的构造函数 把@Autowired注解放在构造函数上方,在构造函数里写上需要注入的形参即可 2.通过XML配置文件方式定义有参构造函数
- pip安装itchat模块成功后annocanda中No module named 'itchat'
在cmd中pip install itchat 成功后在annocanda中却出现了下面的情况: 经过查找网上各种查询,原来pip默认是把东西安装在系统python环境中,即C:\Python27\L ...
- kafka启动时出现FATAL Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) java.io.IOException: Permission denied错误解决办法(图文详解)
首先,说明,我kafk的server.properties是 kafka的server.properties配置文件参考示范(图文详解)(多种方式) 问题详情 然后,我启动时,出现如下 [hadoop ...
- mysql-installer-web-community-5.7.18.1.msi的安装(图文详解)
不多说,直接上干货! 说在前面的话 我为什么已经尝试和使用过同类型产品的很多MySQL版本,还要书写这篇博客呢?基于mysql-installer-web-community-5.7.18.1.msi ...
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- Java 8 (6) Stream 流 - 并行数据处理与性能
在Java 7之前,并行处理集合非常麻烦.首先你要明确的把包含数据的数据结构分成若干子部分,然后你要把每个子部分分配一个独立的线程.然后,你需要在恰当的时候对他们进行同步来避免竞争,等待所有线程完成. ...
- win7 中使用NFS共享
转自和修改自:http://blog.sina.com.cn/s/blog_553761ef0100oevm.html 一 安装 在卸载或更改程序->打开或关闭windows的功能-> 安 ...
- shell编程中一个空格引起的异常
最近使用shell编写一个备份和替换f服务器程序的脚本replace.sh,初衷是为了节约人力的重复机械的劳动.在脚本编写过程中,由于疏忽多打了一个空格,出现了一个不符合预期的情况. 1.先看一下出问 ...
- Python 开发初识
从今天开始记录自己的python开发之路,用博客记录自己的学习经历,以及学习小结,小的项目模块,努力充实,做最好的自己!!!
- POJ_2828_Buy Tickets
题意:插队问题: 2016.5.20,复习这道题. 总结:线段树基础不牢,建树,更新尚不熟悉,注意加强理解记忆. 主要理解:(单点更新,逆序插入) 发生插队时,前面的队伍是连续没有空位的,即pos:2 ...