zoukankan      html  css  js  c++  java
  • (TOJ4406)二叉排序树

    描述

    输入一系列整数,建立二叉排序树并输出排序后的序列。

    输入

    输入数据有多组,每组数据第一行包括一个整数n(1<=n<=100)。  接下来的一行包括n个整数。

    输出

    每组数据排序结果输出一行。每行最后一个数据之后有一个空格。

    样例输入

    5  
    1 6 5 9 8 
    8
    4 6 9 2 5 4 7 3

    样例输出

    1 5 6 8 9
    2 3 4 4 5 6 7 9
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <ctype.h>
     4 #include <math.h>
     5 
     6 typedef struct BiTNode{
     7     int data;       //数据域 
     8     struct BiTNode *lc,*rc;  //左右孩子指针 
     9 }BiTNode,*BiTree;
    10 
    11 BiTree InsertBST(BiTree T, int e)  //向排序二叉树T中插入新数据e 
    12 {
    13     BiTree f,p;
    14     f=p=T;
    15     while(p){
    16         f=p;
    17         p=(e<=p->data)?p->lc:p->rc;
    18     }
    19     p=(BiTree)malloc(sizeof(BiTNode));  
    20     p->data=e;
    21     p->lc=p->rc=NULL;
    22     if(T==NULL)
    23      T=p;
    24   else
    25   {
    26       if(e<=f->data)
    27         f->lc=p;
    28       else
    29         f->rc=p;
    30   }
    31   return T;
    32 }
    33 
    34 void display(BiTree T)  //中序遍历并打印二叉排序树所有节点 
    35 {
    36     if(T){
    37         display(T->lc);
    38         printf("%d ",T->data);
    39         display(T->rc);
    40     }
    41 }
    42 
    43 int main()
    44 {
    45     int n,t,i;
    46     BiTree T;
    47     while(scanf("%d",&n)!=EOF)
    48     {
    49         T=NULL;
    50         for(i=0; i<n; i++)
    51         {
    52             scanf("%d",&t);
    53             T=InsertBST(T,t);
    54         }
    55         display(T);
    56         printf("\n");
    57     }
    58     return 0;
    59 }
    60     
     
  • 相关阅读:
    2020年4月4日训练
    HZNU Training 17 for Zhejiang Provincial Competition 2020
    [kuangbin带你飞]专题四 最短路练习
    三分法
    洛谷多校第一周续
    洛谷春季 ACM 多校训练第五周
    简单数学三月小结
    线段树&树状数组
    图论三月小结
    Java中Double保留后小数位的几种方法
  • 原文地址:https://www.cnblogs.com/xueda120/p/3102873.html
Copyright © 2011-2022 走看看