HDU 1710 二叉树遍历,输入前、中序求后序
1、HDU 1710 Binary Tree Traversals
2、链接:http://acm.hust.edu.cn/vjudge/problem/33792
3、总结:记录下根结点,再拆分左右子树,一直搜下去。感觉像dfs。
题意:二叉树,输入前、中序求后序。
(1)建立出一颗二叉树,更直观。但那些指针用法并不是很懂。
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std; typedef struct tree
{
tree *l,*r;
int num;
};
tree *root; tree *build(int *a,int *b,int n)
{
tree *s;
for(int i=;i<n;i++)
{
if(a[]==b[i]){
s=(tree *)malloc(sizeof(tree)); //不要漏了这个 s->num=b[i];
s->l=build(a+,b,i);
s->r=build(a+i+,b+i+,n-i-);
return s;
}
} return NULL;
} void postorder(tree *ro)
{
if(ro==NULL)return ;
postorder(ro->l);
postorder(ro->r);
if(ro==root){
printf("%d\n",ro->num);
}
else {
printf("%d ",ro->num);
}
} int main()
{
int n;
int a[],b[];
while(scanf("%d",&n)!=EOF)
{
for(int i=;i<n;i++)
scanf("%d",&a[i]);
for(int i=;i<n;i++)
scanf("%d",&b[i]); root=build(a,b,n);
postorder(root);
} return ;
}
(2)直接在遍历时输出。
#include<iostream>
#include<cstdio>
using namespace std; void preorder(int *a,int *b,int n,int flag)
{
for(int i=;i<n;i++)
{
if(a[]==b[i]){
preorder(a+,b,i,);
preorder(a+i+,b+i+,n-i-,);
if(flag){
printf("%d\n",a[]);
}
else {
printf("%d ",a[]);
}
}
}
return ;
} int main()
{
int n,a[],b[];
while(scanf("%d",&n)!=EOF)
{
for(int i=;i<n;i++)
scanf("%d",&a[i]);
for(int i=;i<n;i++)
scanf("%d",&b[i]); preorder(a,b,n,);
} return ;
}
HDU 1710 二叉树遍历,输入前、中序求后序的更多相关文章
- HDU 1710 二叉树遍历
首先.先序遍历是先访问根节点.然后左节点 然后右节点.从根节点开始 直到它的子节点没有左节点才开始回溯访问上一个节点的右节点.同理.中序遍历 先访问左节点 然后是父节点 然后是右节点.从根节点开始 直 ...
- UVa 二叉树重建(先序+中序求后序)
题意是给出先序和中序,求出后序. 先序遍历先访问根结点,通过根结点可以在中序中把序列分为左子树部分和右子树部分,我建了一个栈,因为后序遍历最后访问根结点,所以把每次访问的根结点放入栈中.因为后序遍历先 ...
- Tree Recovery(前序中序求后序)
Tree Recovery Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14640 Accepted: 9091 De ...
- PAT (Advanced Level) 1136~1139:1136模拟 1137模拟 1138 前序中序求后序 1139模拟
1136 A Delayed Palindrome(20 分) 题意:给定字符串A,判断A是否是回文串.若不是,则将A反转得到B,A和B相加得C,若C是回文串,则A被称为a delayed palin ...
- python实现根据前序与中序求后序
我就不板门弄斧了求后序 class Tree(): def __init__(self,x): self.value=x self.left=None self.right=None class So ...
- HLG2040二叉树遍历已知前中,求后
二叉树的遍历 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 60(34 users) Total Accepted: 34(30 us ...
- c++树,知道前序和中序求后序遍历
经常有面试题就是知道一棵树的前序遍历和中序遍历让你写出后序遍历,这个慢慢画是能画出来的,但是要很快的弄出来还是要懂原理. 首先说一下三种遍历:所谓的前序后序和中序都是遍历时遍历根节点的顺序.子树的话依 ...
- 【美国血统 American Heritage 题解】已知前序中序 求后序
题目: 题目名称:美国血统 American Heritage 题目来源:美国血统 American Heritage ## 题目描述 农夫约翰非常认真地对待他的奶牛们的血统.然而他不是一个真正优秀的 ...
- ACM题目————已知前序和中序求后序
#include <iostream> #include <cstring> #include <cstdio> using namespace std; ], z ...
随机推荐
- 【JAVA基本数据类型包装类】
一.概述 JAVA中一共有8种数据类型,分别是byte short int long boolean float double char,与此相对应的,有8个类与它们分别对应: byte Byte ...
- 如何减少JS的全局变量污染
A,唯一变量 B,闭包
- 【POJ水题完成表】
题目 完成情况 poj1000:A+B problem 完成 poj1002:电话上按键对应着数字.现在给n个电话,求排序.相同的归一类 完成 poj1003:求最小的n让1+1/2+1/3+...+ ...
- HDU1502 Regular Words
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502 思路:当只有两个数时,可以用卡特兰数做,当三个数时,没想到卡特兰数的做法.可以使用动态规划. 状态转 ...
- Windows环境下Oracle数据库的自动备份脚本
批处理文件(.bat) @echo off echo ================================================ echo Windows环境下Oracle数据 ...
- 第二篇:SOUI源码的获取及编译
源代码的获取 SOUI的源码采用SVN管理. SVN:http://code.taobao.org/svn/soui2 这里主要包含两个目录:trunk 及 third-part. trunk目录保存 ...
- Java8中的default方法
default方法 Java 8中引入了一个新的概念,叫做default方法,也可以称为Defender方法,或者虚拟扩展方法(Virtual extension methods). Default方 ...
- python web编程-CGI帮助web服务器处理客户端编程
这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...
- mysql 导出表结构和表数据 mysqldump用法
mysql 导出表结构和表数据 mysqldump用法 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据mysq ...
- ASP.Net MVC开发基础学习笔记(1):走向MVC模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...