文章

145

粉丝

144

获赞

21

访问

41.5k

头像
判断二叉树是否对称 题解:C
P1551 东北大学机试题
发布于2024年2月24日 16:26
阅读数 470

第一层(2^0)1个,第二层(2^1)2个,第三层(2^2)4个。。。。。。。。

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

int JudgeSymmetry(char *t,int n)
{
	int i = 0,j,k,m,l = 0;
	while(i < n)
	{
		j = pow(2,l);
		k = i;
		m = k+j-1;
		while(k <= m && m < n)
		{
			if(t[k] != '#' && t[m] == '#' || t[k] == '#' && t[m] != '#')
				return 0;
			k++;
			m--;
		}
		if(i == 0) i = 1;
		else i = i+j; 
		l++;
	}
	return 1;
}

int main()
{
	char tree[1000];
	gets(tree);
	int len = strlen(tree);
	if(JudgeSymmetry(tree,len)) printf("YES");
	else printf("NO");
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发