zoukankan      html  css  js  c++  java
  • swust oj 1011

    二叉排序树的实现和查找

    1000(ms)
    10000(kb)
    2782 / 6301
    按照给定的关键字集合,建立二叉排序树。在建立的二叉排序树上查找指定的关键字,查找成功,输出找到该关键字比较的次数;查找不成功,输出-1.

    输入

    关键字个数n; 
    关键字集合; 
    要查找的关键字;

    输出

    查找成功输出比较的次数,否则输出-1。

    样例输入

    12
    25 18 46 2 53 39 32 4 74 67 60 11
    74
    

    样例输出

    4
     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<cstdio>
     6 typedef int Datetype;
     7 using namespace std;
     8 int x;
     9 
    10 typedef struct link{
    11     Datetype date;
    12     struct link *lchild;
    13     struct link *rchild;
    14 }tree;
    15 
    16 void creat(tree *&L, int arr[] ,int l,int r)
    17 {
    18     if(l>r)
    19     {
    20         L=NULL;
    21         return ;
    22     }
    23     int s=(l+r)>>1;
    24     L=new tree;
    25     L->date=arr[s];
    26     creat(L->lchild,arr,l,s-1);
    27     creat(L->rchild,arr,s+1,r);
    28 }
    29 
    30 void display(tree *&L)
    31 {
    32     if(L!=NULL)
    33     {
    34         cout<<L->date<<" ";
    35         display(L->lchild);
    36         display(L->rchild);
    37     }
    38 }
    39 
    40 void delet(tree *&L)
    41 {
    42     if(L!=NULL)
    43     {
    44         delet(L->lchild);
    45         delet(L->rchild);
    46         delete(L);
    47     }
    48 }
    49 
    50 void find(tree *&L, int a)
    51 {
    52     if(L!=NULL)
    53     {
    54         x++;
    55         if(a>L->date)
    56             find(L->rchild,a);
    57         else if(a<L->date)
    58             find(L->lchild,a);
    59         else
    60             return ;
    61     }
    62     if(L==NULL)
    63         x=0;
    64 }
    65 
    66 int main()
    67 {
    68     int arr[100];
    69     int n,a;
    70     tree *L;
    71     cin>>n;
    72     for(int i=0;i<n;i++)
    73     {
    74         cin>>arr[i];
    75     }
    76     sort(arr,arr+n);
    77     cin>>a;
    78     creat(L,arr,0,n-1);
    79 //    display(L);
    80     find(L,a);
    81     if(x)
    82         cout<<x;
    83     else
    84         cout<<"-1";
    85     delet(L);
    86     return 0;
    87 }
  • 相关阅读:
    xen4.4.2/xen-4.4.2/stubdom/vtpmmgr/README
    安装xen上的Ubuntu虚拟机的配置文件
    xen平台中vtpm的使用说明
    TPM学习笔记1-1
    通过TSS软件栈使用TPM——获取并改变TPM寄存器-学习笔记1
    安装TPMemulator
    unik compilers-返回可用于目标unik后端的编译器列表。
    构建一个Java语言的unikernel,(基于OSv的 unikernel)
    Ubuntu14.04下安装maven
    学习笔记2-了解unik的设计
  • 原文地址:https://www.cnblogs.com/Iwpml-595/p/10713011.html
Copyright © 2011-2022 走看看