【题目描述】
如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.
例:如下图中的二叉树T1是对称的,T2是不对称的。
二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。
【输入】
二叉树用顺序结构给出,若读到#则为空。
【输出】
如果二叉树是对称的,输出“Yes”,反之输出“No”。
【输入样例】
ABCDE
【输出样例】
Yes
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define N 1001
using namespace std;
char s[N];
int main()
{
cin >> s;//输入字符串
int len = strlen(s);
s[len] = '#';//第len+1个字符更新为‘#’
int flag = true;
for (int i = 1; i < len; i += 2) {
if ((s[i] == '#' && s[i + 1] != '#') || (s[i + 1] == '#' && s[i] != '#'))//循环遍历结点,发现'#'后如果左节点或右节点没有一个是‘#’输出 “NO”
{
flag = false;
break;
}
}
if (flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
各位读者喜欢的话记得点个赞再走哦,先赞后看,养成习惯!