树结构练习——排序二叉树的中序遍历
2015-11-13 19:07
246 查看
树结构练习——排序二叉树的中序遍历
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。输入
输入包含多组数据,每组数据格式如下。第一行包含一个整数n,为关键值的个数,关键值用整数表示。(n<=1000)
第二行包含n个整数,保证每个整数在int范围之内。
输出
为给定的数据建立排序二叉树,并输出其中序遍历结果,每个输出占一行。示例输入
1 2 2 1 20
示例输出
2 1 20
提示
来源
赵利强示例程序
#include<stdio.h> #include<stdlib.h> int l,a[1000]; struct node { int data; struct node *lchild,*rchild; }; struct node *creat(struct node *p,int x) { if(p==NULL) { p=(struct node *)malloc(sizeof(struct node)); p->lchild=NULL; p->rchild=NULL; p->data=x; } else { if(x<p->data) p->lchild=creat(p->lchild,x); else p->rchild=creat(p->rchild,x); } return p; } void zhong(struct node *p) { if(p!=NULL) { zhong(p->lchild); a[l++]=p->data; //printf("%d ",p->data); zhong(p->rchild); } } int main() { int i,j,n,m,k,t; while(scanf("%d",&n)!=EOF) { l=0; struct node *p; p=NULL; for(i=0;i<n;i++) { scanf("%d",&m); p=creat(p,m); } zhong(p); for(i=0;i<l;i++) if(i==0) printf("%d",a[i]); else printf(" %d",a[i]); printf("\n"); } }
相关文章推荐
- 杭电acm2108
- nginx自定义负载均衡策略
- oxcdcdcdcd是什么?
- java设计模式-迭代器模式(Iterator)
- 圆环形的progressBar进度条的Demo下载
- Hibernate的优化初步
- Scalaz(12)- Monad:再述述flatMap,顺便了解MonadPlus
- Scalaz(12)- Monad:再述述flatMap,顺便了解MonadPlus
- 动手动脑之小程序:TryAndCatch
- SSH 远程登陆很慢的解决办法
- 112 系统自带二维码扫描
- PHP http://localhost:63342/untitled1/index.php/Home URL格式访问不到报404 的解决方案
- Daily Scrum - 11/13
- Android Wifi的工作流程
- 分别使用Jmeter/Loadrunner/SoapUI做Web Service接口测试的简单操作
- 怎样从C#中打开数据库并进行 增 删 改 查 操作
- 【数据结构】二叉树
- 使用c++builder中stringgird控件和设定行名称和列名称的问题
- iOS 基础知识的回顾和梳理
- 网上编译系统提示的错误?求解?