zoukankan      html  css  js  c++  java
  • HDU 3791 二叉搜索树

    题意:给出两串数字,每一串数字都构成一颗二叉树,问这两颗二叉树是否为同一颗二叉树。

    可以用样例来考虑

    5 6 7 4 3 2 6

    6大于5,6是5的右儿子

    7大于5,大于6,所以是5的右儿子的右儿子,即为6的右儿子

    4小于5,所以4是5的左儿子

    画出这一颗二叉树为

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 char s[25],s1[25];
    10 int tree[2025],tree1[2025];
    11 
    12 int main()
    13 {
    14     int t,i,j;
    15     while(scanf("%d",&t)!=EOF&&t){
    16         memset(tree,-1,sizeof(tree));
    17         cin>>s;
    18         for(i=0;i<strlen(s);i++){
    19             int c=s[i]-'0';
    20             j=1;
    21             while(tree[j]!=-1){
    22                 if(c<=tree[j]) j=2*j;
    23                 else j=2*j|1;
    24             }
    25             tree[j]=c;
    26         }
    27         
    28         while(t--){
    29             memset(tree1,-1,sizeof(tree1));
    30             cin>>s1;
    31            for(i=0;i<strlen(s1);i++){
    32             int c=s1[i]-'0';
    33             j=1;
    34             while(tree1[j]!=-1){
    35                 if(c<=tree1[j]) j=2*j;
    36                 else j=2*j|1;
    37             }
    38             tree1[j]=c;
    39         }
    40         
    41         for(i=1;i<=2005&&tree[i]==tree1[i];i++);//注意这里判断i的时候要比开的tree数组的大小小一些,因为这个wrongwrongwrong 
    42         if(i>2005) printf("YES
    ");
    43         else printf("NO
    ");
    44         }
    45     }
    46     return 0;
    47 }
    View Code
  • 相关阅读:
    R语言实战
    Python Google Translate API
    Windows使用技巧
    test_CSDN_markdown_format
    Linux: bash script
    test_markdown
    线性基学习笔记+模板总结
    Educational Codeforces Round 69 D Yet Another Subarray Problem
    图片托管
    二维线段树模板,建树,维护最大最小值
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4334780.html
Copyright © 2011-2022 走看看