树结构练习——排序二叉树的中序遍历
2016-10-27 20:19
288 查看
树结构练习——排序二叉树的中序遍历
Time Limit: 1000MSMemory Limit: 65536KB
Submit
Statistic
Discuss
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 <bits/stdc++.h>
using namespace std;
int l;
int a[10086];
typedef struct node
{
int data;
struct node *lc,*rc;
}tree;
tree *creat(tree *root,int k)
{
if(root==NULL)
{
root=new tree;
root->data = k;
root->lc = root->rc = NULL;
}
else
{
if(root->data>k)
{
root->lc = creat(root->lc,k);
}
else{
root->rc = creat(root->rc,k);
}
}
return root;
}
void inordertraval(tree *root)
{
if(root)
{
inordertraval(root->lc);
//printf("%c",root->data);
a[l++] = root->data;
inordertraval(root->rc);
}
}
int main()
{
int i,n,k;
struct node *root;
root = new tree;
while(scanf("%d",&n)!=EOF)
{
l=0;
root = NULL;
for(i=0;i<n;i++)
{
scanf("%d",&k);
root=creat(root,k);
}
inordertraval(root);
for(i=0;i<l;i++)
{
printf(i==0?"%d":" %d",a[i]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历 分类: 树 2015-06-21 11:05 12人阅读 评论(0) 收藏
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- sdutacm-树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- OJ2128树结构练习——排序二叉树的中序遍历
- 数据结构之二叉树 树结构练习——排序二叉树的中序遍历 (排序建树+中序遍历)
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- SDUTOJ 2128 树结构练习——排序二叉树的中序遍历