二叉树hdu1710
学习二叉树,看了两天也不明白,唉!acm之路让我体验到要付出巨大的努力,废话不多说,看我网上找到的代码:
此题题意很明确,给你先序遍历,中序遍历,求后序遍历。但代码就让我找不到东西了。
http://acm.hdu.edu.cn/showproblem.php?pid=1710
#include <stdio.h>
#include <string.h>
void build(int n,int *a,int *b,int *c)
{
int *p=b;
if(n<=)return;
while()
{
if(a[]==*p)
break;
else
p++;
}
int x=p-b;
build(x,a+,b,c);
build(n-x-,a+x+,b+x+,c+x);
c[n-]=a[];
}
int main()
{
int n,i;
while(~scanf("%d",&n))
{
int a[],b[],c[];
for(i=;i<n;i++)
scanf("%d",&a[i]);
for(i=;i<n;i++)
scanf("%d",&b[i]);
build(n,a,b,c);
for(i=;i<n-;i++)
{
printf("%d ",c[i]);
} printf("%d\n",c[n-]);
}
return ;
}
这为结构体指针的一个代码!
#include<stdio.h>
#include<stdlib.h>
int a[],b[];
int flag;
typedef struct node
{
int data;
struct node *lchild,*rchild;
} Tnode,*Tree;
int m=sizeof(Tnode);
Tree newnode()
{
Tree p;
p=(Tree)malloc(m);
p->lchild=NULL;
p->rchild=NULL;
return p;
} void Creat(int i,int j,int k,int t,Tree p)//此处理解甚为重要,建立过程,先自己模拟的过程如果模拟的过程理解了这里就容易许多
{
p->data=a[i];
int m;
for(m=k; m<=t; m++)
{
if(a[i]==b[m])
break;
}
if(m==k)p->lchild=NULL;
else
{
p->lchild=newnode();
Creat(i+,i+(m-k),k,m-,(p->lchild));//需要理解的地方
}
if(m==t)p->rchild=NULL;
else
{
p->rchild=newnode();
Creat(i+(m-k)+,j,m+,t,(p->rchild));//此处也是需要加强理解之处
}
}
void post(Tree p)
{
if(p!=NULL)
{
post(p->lchild);
post(p->rchild);
if(p->data!=NULL)
if(flag==)
{
printf("%d",p->data);
flag=;
}
else
printf(" %d",p->data);
}
} int main()
{
Tree root;
int i,n;
while(scanf("%d",&n)!=EOF)
{
flag=;
for(i=; i<=n; i++)
scanf("%d",&a[i]);
for(i=; i<=n; i++)
scanf("%d",&b[i]);
root=newnode();
Creat(,n,,n,root);
post(root);
printf("\n");
}
return ;
}
也许以后会看得懂吧!
二叉树hdu1710的更多相关文章
- hdu1710(Binary Tree Traversals)(二叉树遍历)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- 二叉树的前序和中序得到后序 hdu1710
今天看学长发过来的资料上面提到了中科院机试会有一个二叉树的前序中序得到后序的题目.中科院的代码编写时间为一个小时,于是在七点整的时候我开始拍这个题目.这种类型完全没做过,只有纸质实现过,主体代码半个小 ...
- 如何求先序排列和后序排列——hihocoder1049+洛谷1030+HDU1710+POJ2255+UVA548【二叉树递归搜索】
[已知先序.中序求后序排列]--字符串类型 #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在这一周遇到的问题便是:给出一棵二叉树的前序和 ...
- hdu1710 二叉树的遍历
Problem Description 已知前序和中序 求后序 Input The input contains several test cases. The first line of each ...
- hdu1710 Binary Tree Traversals(二叉树的遍历)
A binary tree is a finite set of vertices that is either empty or consists of a root r and two disjo ...
- hdu1710(二叉树的历遍)
/* Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- Binary Tree Traversals(HDU1710)二叉树的简单应用
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法
二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...
- 二叉树的递归实现(java)
这里演示的二叉树为3层. 递归实现,先构造出一个root节点,先判断左子节点是否为空,为空则构造左子节点,否则进入下一步判断右子节点是否为空,为空则构造右子节点. 利用层数控制迭代次数. 依次递归第二 ...
随机推荐
- maven相关
1. 创建/导入maven项目时 eclipse默认jdk版本配置:http://blog.csdn.net/lzj0470/article/details/42292021 2. eclipse 使 ...
- ubuntu apache开启重写模块
http://www.iblue.cc/2011/09/ubuntu-apache%E5%BC%80%E5%90%AF%E9%87%8D%E5%86%99%E6%A8%A1%E5%9D%97/ Ubu ...
- Compress a Folder/Directory via Perl5
Compress a Folder/Directory via Perl5 tested in Windows, Mac OS X, Ubuntu16.04 #!/usr/bin/perl #压缩指定 ...
- php中urlencode与rawurlencode的区别有那些呢
urlencode 函数: 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).此编码与 WWW 表单 POST 数据的编码 ...
- 13、mysql/触发器
1. mysql mysql基础 1)mysql存储结构: 数据库 -> 表 -> 数据 sql语句 2)管理数据库: 增加: create database 数据库 default ...
- oracle nvl和nvl2的区别
一直用oracle nvl函数,最近发现还有一个nvl2函数: nvl(a,b) 如果a不为null 则返回a,如果a为null则返回b; nvl2(a,b,c) ,如果a不为null 则返回b,如果 ...
- [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
参考:http://blog.csdn.net/beyondhaven/article/details/4204345 参考:http://blog.csdn.net/joeblackzqq/arti ...
- ACM题目————二叉树最大宽度和高度
http://codevs.cn/problem/1501/ 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整 ...
- JSTL.带标签体的标签,方法和例子
1. 实现 forEach 标签: 两个属性: items(集合类型, Collection), var(String 类型) doTag: 遍历 items 对应的集合 把正在遍历的对象放入到 pa ...
- 周赛-kiki's game 分类: 比赛 2015-08-02 09:24 7人阅读 评论(0) 收藏
kiki's game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others) Total S ...