码迷,mamicode.com
首页 > 编程语言 > 详细

SDUT2128 排序二叉树的中序遍历

时间:2015-08-17 17:28:15      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

输入包含多组数据,每组数据格式如下。
第一行包含一个整数n,为关键值的个数,关键值用整数表示。(n<=1000)
第二行包含n个整数,保证每个整数在int范围之内。

输出

为给定的数据建立排序二叉树,并输出其中序遍历结果,每个输出占一行。
 

示例输入

1
2
2
1 20

示例输出

2
1 20

提示

 

来源

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

int a[1000],n;
struct Tree
{
    int s;
    Tree *L,*R;
}*Root;
Tree *Creat()
{
    Tree *p;
    p=new Tree;
    p->L=NULL;
    p->R=NULL;
}
int KKK=0;
int middle(Tree *root)
{
    if(root!=NULL)
    {
        middle(root->L);
        if(KKK==0)
            KKK=1;
        else
            printf(" ");
        printf("%d",root->s);
        middle(root->R);
    }
}
void Build()
{
    Tree *root;
    Root->s=a[0];
    for(int i=1; i<n; i++)
    {
        root=Root;
        while(1)
        {
            if(a[i]<root->s)
            {
                if(root->L==NULL)
                {
                    Tree *p;
                    p=Creat();
                    p->s=a[i];
                    root->L=p;
                    break;
                }
                else
                    root=root->L;
            }
            else
            {
                if(root->R==NULL)
                {
                    Tree *p;
                    p=Creat();
                    p->s=a[i];
                    root->R=p;
                    break;
                }
                else
                    root=root->R;
            }
        }
    }
}
int main()
{
    while(~scanf("%d",&n)) //又多定义了局部变量n
    {
        KKK=0;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&a[i]);
        }
        Root=Creat();
        Build();
        middle(Root);
        printf("\n");
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

SDUT2128 排序二叉树的中序遍历

标签:

原文地址:http://blog.csdn.net/became_a_wolf/article/details/47726273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!