• HDU3791二叉搜索树(二叉树)


    Problem Description
    判断两序列是否为同一二叉搜索树序列
     
    Input
    开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
    接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
    接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
     
    Output
    如果序列相同则输出YES,否则输出NO
     
    Sample Input
    2
    567432
    543267
    576342
    0
     
    Sample Output
    YES NO
     
    Source
    浙大计算机研究生复试上机考试-2010年
    #include<cstdio>
    #include<string.h>
    #include<cmath>
    using namespace std;
    const int maxn=1000+1;
    char S[10+1],s[10+1],Tree[maxn],tree[maxn];
    //建立原始二叉树
    void BuildTree(char c,int i)
    {
        if(Tree[i]=='#')Tree[i]=c;
        else
        {
            if(c<Tree[i])BuildTree(c,2*i);
            if(c>Tree[i])BuildTree(c,2*i+1);
        }
    }
    //建立判断二叉树
    void Buildtree(char c,int i)
    {
        if(tree[i]=='#')tree[i]=c;
        else
        {
            if(c<tree[i])Buildtree(c,2*i);
            if(c>tree[i])Buildtree(c,2*i+1);
        }
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)==1&&n)
        {
            //输入原始数组
            scanf("%s",&S);
            int Len=strlen(S);
            //建原始树
            memset(Tree,'#',sizeof(Tree));
            for(int i=0;i<Len;i++)
            {
                BuildTree(S[i],1);
            }
            while(n--)
            {
                //输入判断树组
                scanf("%s",&s);
                int len=strlen(s);
                if(len!=Len)printf("NO
    ");
                else
                {
                    //建判断树
                    memset(tree,'#',sizeof(tree));
                    for(int i=0;i<len;i++)
                    {
                        Buildtree(s[i],1);
                    }
                    int res=1;
                    for(int i=1;i<maxn;i++)
                    {
                        if(tree[i]!=Tree[i])
                        {
                            printf("NO
    ");
                            res=0;
                            break;
                        }
                    }
                    if(res==1)printf("YES
    ");
                }
            }
        }
        return 0;
    }
      
  • 相关阅读:
    软件工程课程建议
    结对编程2
    结对编程---《四则运算》
    AVAudioPlayer播放音乐
    《问吧》需求分析
    有关结对编程的感想
    UItabBarController
    ViewController 视图控制器的常用方法
    <问吧>调查问卷心得体会
    UINavigationController导航控制器
  • 原文地址:https://www.cnblogs.com/Annetree/p/5480972.html
Copyright © 2020-2023  润新知