zoukankan      html  css  js  c++  java
  • SDUT 2128 树结构练习——排序二叉树的中序遍历

     

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

    Time Limit: 1000 ms Memory Limit: 65536 KiB

    Problem Description

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

    Input

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

    Output

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

    Sample Input

    1
    2
    2
    1 20

    Sample Output

    2
    1 20

    提示:本题有技巧,因为根据排序二叉树的特点,比根节点小的放到其左子树,大的放到其右子树,可以看出,如果写其中序遍历,那么一定是递增序列,所以可以直接排序输出。(嘻嘻嘻不是我告诉你的

    代码实现如下(g++):
    #include<bits/stdc++.h>
    
    typedef struct node
    {
        int data;
        struct node *left;
        struct node *right;
    }node,*Tree;
    int n,k;
    void create(Tree &root,int ch)
    {
        if(root==NULL)
        {
            root=new(node);
            root->left=NULL;
            root->right=NULL;
            root->data=ch;//把第一个点记为根节点
        }
        else
        {
            if(ch<root->data)//如果该点比根节点小,放到左子树
                create(root->left,ch);
            else//否则放到右子树
                create(root->right,ch);
        }
    }
    
    void iOnisort(Tree &root)
    {
        if(root)
        {
            iOnisort(root->left);
            if(k==1)
            {printf("%d",root->data);
            k++;}
            else
            {printf(" %d",root->data);}
            iOnisort(root->right);
        }
    }
    
    int main()
    {
        int n,i;
        Tree root;
        while(~scanf("%d",&n))
        {
            k=1;
            root=NULL;
            while(n--)
            {
            scanf("%d",&i);
            create(root,i);
            }
            iOnisort(root);
            printf("
    ");
        }
        return 0;
    }
    
    
    /***************************************************
    Result: Accepted
    Take time: 0ms
    Take Memory: 208KB
    ****************************************************/
     
  • 相关阅读:
    [翻译]9个最好的富文本编辑器概览
    使用 AForm 快速开发高度复用的表单
    sql server和oracle行转列的一种典型方法
    hibernate4 分页报只进结果集不支持请求的操作的解决办法
    android主流UI布局
    Android 4.0源码放出
    The SQL Server Service Broker for the current database is not enabled
    iphone网络编程 http请求 get / post(发送二进制文件) 总结
    VS2008编译命令
    如何使用SOCKET 发送HTTP1.1 GET POST请求包
  • 原文地址:https://www.cnblogs.com/jkxsz2333/p/9498648.html
Copyright © 2011-2022 走看看