online_judge_1009

183 篇文章 0 订阅
#include <iostream>
#include <cstring>
using namespace std;

struct Node
{
    int c;
    Node* lchild;
    Node* rchild;
}Tree[25];

char s1[25],s2[25];
char *str;
int *size0;
int size1,size2;
int loc;

Node* creat()
{
    Tree[loc].lchild = Tree[loc].rchild = NULL;
    return &Tree[loc++];
}

Node* Insert(Node *T, int i)
{
    if(T == NULL)
    {
        T = creat();
        T->c = i;
    }
    else if(T->c > i)
        T->lchild = Insert(T->lchild, i);
    else if(T->c < i)
        T->rchild = Insert(T->rchild, i);
    return T;
}

void PreOrder(Node *T)
{
    if(T)
        str[(*size0)++] = T->c + '0';
    if(T->lchild)
        PreOrder(T->lchild);
    if(T->rchild)
        PreOrder(T->rchild);
}

void InOrder(Node* T)
{
    if(T->lchild)
        InOrder(T->lchild);
    str[(*size0)++] = T->c + '0';
    if(T->rchild)
        InOrder(T->rchild);

}

int main()
{
    int n,i,j,data;
    char str1[12];
    Node *T1;
    while(cin>>n)
    {
        if(n == 0)
            break;
        str = s1;
        cin>>str1;
        loc = 0;
        T1 = NULL;
        size1 = 0;
        size0 = &size1;
        for(i=0; str1[i]!=0; ++i)
        {
            data = str1[i] - '0';
            T1 = Insert(T1, data);
        }
        PreOrder(T1);
        InOrder(T1);
        str[size1] = 0;
        for(i=0; i<n; ++i)
        {
            str = s2;
            cin>>str1;
            loc = 0;
            T1 = NULL;
            size2 = 0;
            size0 = &size2;
            for(j=0; str1[j]!=0; ++j)
            {
                data = str1[j] - '0';
                T1 = Insert(T1, data);
            }
            PreOrder(T1);
            InOrder(T1);
            str[size2] = 0;
            cout<<((strcmp(s1,s2) == 0)?"YES":"NO")<<endl;
        }
    }
    return 0;
}


模仿大牛的手法,这种题目太经典了。。很漂亮的代码。。还要写几次才行!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值