文章

25

粉丝

364

获赞

8

访问

219.0k

头像
判断二叉树是否对称
P1551 东北大学机试题
发布于2021年1月29日 12:29
阅读数 10.6k

数组存储,一层层往下判断

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

//判断
int Judge(char *s,int start,int end,int len)
{
    if (end>=len)
    {
        return 1;
    }
    
    for (int i = start,j=end; i<=j; i++,j--)
    {
        if ((s[i]=='#'&&s[j]!='#')||(s[j]=='#'&&s[i]!='#'))
        {
            return 0;
        }              
    }
    return Judge(s,2*start+1,2*end+2,len);//判断下一层
}

int main()
{
    char s[1000];
    int len;

    scanf("%s",s);
    printf("%s",Judge(s,0,0,strlen(s))?"YES":"NO");

    //system("pause");
    return 0;
}

 

登录查看完整内容


登录后发布评论

1 条评论
尼古拉斯富贵
2021年3月12日 17:30

我认为该方法不正确,题目未说这是满二叉树,因此不能这样直接获得每层的节点位置。

比如序列 ABCD##EF#G#,就不能这样计算。

赞(1)