二叉树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节点,先判断左子节点是否为空,为空则构造左子节点,否则进入下一步判断右子节点是否为空,为空则构造右子节点. 利用层数控制迭代次数. 依次递归第二 ...
随机推荐
- mysql笔记04 MySQL高级特性
MySQL高级特性 1. 分区表:分区表是一种粗粒度的.简易的索引策略,适用于大数据量的过滤场景.最适合的场景是,在没有合适的索引时,对几个分区进行全表扫描,或者是只有一个分区和索引是热点,而且这个分 ...
- js 中的call()函数
a.call(b); 官方说:什么对象替换什么对象. a对象的方法应用到b对象上(函数apply的意思正好说明符合这样理解:a对象应用到b对象上去) a对象既然添加到b对象上了.那么b对象自然就拥有了 ...
- Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime
日期格式的处理总是会很复杂,因为不同的环境日 期格式也不一样.为了程序统一处理, 最好把格式给统一了: 可以在程序的初始化段: FormatSettings.ShortDateFormat := ' ...
- JS 动态加载脚本 执行回调_转
关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解 ...
- windows win10上传文件到linux服务器
1.最直接当然使用终端secucrt和xshell putty之类的,然后使用sz rz 2.如果服务器端不支持sz rz可以使用scp命令,下面这个pscp.exe就是支持scp的,基于ssh,很好 ...
- [转]Dynamics AX and Generic collections of .Net
转自:http://blogs.msdn.com/b/emeadaxsupport/archive/2009/04/23/dynamics-ax-and-generic-collections-of- ...
- expdp impdp中 exclude/include 的使用
exclude和include参数能够在使用expdp或impdp是对特定的对象或对象类型进行筛选或过滤.比如因工作的需要导出特定的表或不导出特定 的表.视图以及存储过程.索引.约束.授权统计信息等等 ...
- php中引用和赋值的区别主要在哪里
php中引用和赋值的区别 <pphp 的引用允许用两个变量来指向同一个内容. 相当于他们可以是 不同的名字,却可以指向 同一个 物理空间. 赋值,它实际上意味着把右边表达式的值赋给左边的运算数. ...
- JS参数传值
1.JS获取URL参数值 //js获取url参数值 function request(paras) { var url = location.href; , url.length).split(&qu ...
- linux命令介绍:df使用介绍
linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法:df [选项] 说明:linux中df命令可显示所有文件系统对 ...