1. 程式人生 > >hdu——3791——二叉樹搜尋樹

hdu——3791——二叉樹搜尋樹

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
    int n;
    int tree1[1005];
    int tree2[1005];
    char s[25];
    int j,i;
    while(cin>>n)
    {
        if(n==0)
         return 0;
        scanf("%s",s);
        memset(tree1,-1,sizeof(tree1));
        for(i=0;s[i]!='\0';i++)
        {
           int t=s[i]-'0';
           j=1;
           while(tree1[j]!=-1)
           {
             if(t<=tree1[j])
               j=j*2;
             else
               j=j*2+1;
           }
           tree1[j]=t;
        }
        while(n--)
        {
            scanf("%s",s);
            memset(tree2,-1,sizeof(tree2));
            for(i=0;s[i]!='\0';i++)
            {
                int t=s[i]-'0';
                j=1;
                while(tree2[j]!=-1)
                {
                  if(t<=tree2[j])
                    j=j*2;
                  else
                    j=j*2+1;
                 }
                tree2[j]=t;
            }

            for(i=1;i<=1024&&tree1[i]==tree2[i];i++)
            if(i>1024)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    }
    return 0;
}