您的位置:首页 > 其它

对称二叉树(tree_c)解题报告

2018-03-25 17:13 204 查看

题目描述

如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.
例:如下图中的二叉树 T1 是对称的, T2 是不对称的。


二叉树用顺序结构给出,若读到#则为空,二叉树 T1=ABCDE, T2=ABCD#E,如果二叉树是对称的,输出“Yes” ,反之输出“No”。 

输入

输出

样例输入

ABCDE

样例输出

Yes

学二叉树的时候写的一道题,和大佬交流了之后感慨自己的思想真妙啊!!!
题意是判断子树是否对称,若都为空或都为有则是对称,否则则是不对称。
顺序结构给你一个字符串,然后判断。
我的思路是:因为是顺序结构给出,所以第一个肯定是根。那么从第二位开始,两位两位判断是否都是字母或都是‘#’即可;
如果字符个数是偶数个,那么肯定不是对称。直接判断;

AC代码:
#include <iostream>
#include <cstdio>
#include <cstring> 
using namespace std;
char s[10010];
int main()
{
cin>>s;
int f=0;
for(int i=1;i<strlen(s);i=i+2)
{
while(strlen(s)%2==0)
{
f=1;
break;
}
if(s[i]=='#'&&s[i+1]!='#')
{
f=1;
break;
}
else if(s[i+1]=='#'&&s[i]!='#')
{
f=1;
break;
}
}
if(f==1)
{
cout<<"No"<<endl;
}
else
{
cout<<"Yes"<<endl;
}
return 0;


妙啊!!!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: