首页 > 学院 > 开发设计 > 正文

树结构练习——排序二叉树的中序遍历

2019-11-08 00:56:03
字体:
来源:转载
供稿:网友

PRoblem Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。

Input 输入包含多组数据,每组数据格式如下。 第一行包含一个整数n,为关键值的个数,关键值用整数表示。(n<=1000) 第二行包含n个整数,保证每个整数在int范围之内。 Output 为给定的数据建立排序二叉树,并输出其中序遍历结果,每个输出占一行。

Example Input

1 2 2 1 20

Example Output

2 1 20

#include <stdio.h>#include <stdlib.h>int k=0;typedef struct node{ int date; struct node *l,*r;}tree;tree *creat(tree *t,int x){ if(t==NULL) { t=(tree *)malloc(sizeof(tree)); t->date=x; t->r=NULL; t->l=NULL; return t; } else { if(x<t->date) { t->l=creat(t->l,x); } else t->r=creat(t->r,x); } return t;}void zhong(tree *t){ if(t) { zhong(t->l); if(t->date!=0) { if(k==0) printf("%d",t->date); else printf(" %d",t->date); k++; } zhong(t->r); }}int main(){ int n,l,i,x,m; tree *t; while(~scanf("%d",&n)) { k=0; t=(tree*)malloc(sizeof(tree)); while(n--) { scanf("%d",&x); creat(t,x); } zhong(t); printf("/n"); } return 0;}/***************************************************User name: Result: AcceptedTake time: 0msTake Memory: 132KBSubmit time: 2017-02-09 20:38:41****************************************************/
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表