zoukankan      html  css  js  c++  java
  • 九度-题目1201:二叉排序树

    http://ac.jobdu.com/problem.php?pid=1201

    题目描述:

        输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。

    输入:

        输入第一行包括一个整数n(1<=n<=100)。
        接下来的一行包括n个整数。

    输出:

        可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。
        每种遍历结果输出一行。每行最后一个数据之后有一个空格。

    样例输入:
    5
    1 6 5 9 8
    样例输出:
    1 6 5 9 8 
    1 5 6 8 9 
    5 8 9 6 1 
    提示:

    输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。

    来源:
    2005年华中科技大学计算机保研机试真题
    构造二叉树结点结构。创建二叉(子)树函数以及插入结点函数。
     1 #include <stdio.h>
     2 
     3 struct Node{
     4     Node *lchild, *rchild;
     5     int c;
     6 }Tree[101];
     7 
     8 int loc;
     9 
    10 Node *create(){
    11     Tree[loc].lchild=Tree[loc].rchild=NULL;
    12     return &Tree[loc++];
    13 }
    14 
    15 Node *insertT(Node *t, int x)
    16 {
    17     if(t==NULL){
    18         t=create();
    19         t->c=x;
    20         return t;
    21     }
    22 
    23     if(t->c > x){//插入左子树
    24         t->lchild=insertT(t->lchild, x);
    25     }
    26     else if(t->c < x){//插入右子树
    27         t->rchild=insertT(t->rchild, x);
    28     }
    29 
    30     return t;
    31 }
    32 //前序
    33 void preOrder(Node *t){
    34     if(t!=0){
    35         printf("%d ", t->c);
    36         preOrder(t->lchild);
    37         preOrder(t->rchild);
    38     }
    39 }
    40 
    41 
    42 //前序
    43 void inOrder(Node *t){
    44     if(t!=0){
    45 
    46         inOrder(t->lchild);
    47         printf("%d ", t->c);
    48         inOrder(t->rchild);
    49     }
    50 
    51 }
    52 
    53 //后序
    54 void postOrder(Node *t)
    55 {
    56     if(t!=0){
    57     postOrder(t->lchild);
    58     postOrder(t->rchild);
    59     printf("%d ",t->c);
    60     }
    61 
    62 }
    63 int main()
    64 {
    65     int n;
    66     while(scanf("%d", &n)!=EOF)
    67     {
    68         Node *ret=0;
    69         loc=0;
    70         for(int i=0; i<n; i++)
    71         {
    72             int t;
    73             scanf("%d", &t);
    74             ret=insertT(ret, t);
    75         }
    76 
    77         preOrder(ret);
    78         printf("
    ");
    79         inOrder(ret);
    80         printf("
    ");
    81 
    82         postOrder(ret);
    83         printf("
    ");
    84     }
    85     return 0;
    86 }
  • 相关阅读:
    Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装
    Hive数据仓库笔记(三)
    Hive数据仓库笔记(二)
    Hive数据仓库笔记(一)
    HBase新的客户端接口
    Hadoop之Secondary NameNode
    hadoop2.x源码编译
    基于新浪SAE平台的微信开发
    分布式存储系统-HBASE
    编程珠玑--心得
  • 原文地址:https://www.cnblogs.com/shenckicc/p/6776886.html
Copyright © 2011-2022 走看看