题目描述
如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称。 例:如下图中的二叉树T1是对称的,T2是不对称的。
输入格式
二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E。
输出格式
如果二叉树是对称的,输出“Yes”,反之输出“No”。
输入样例
ABCDE
输出样例
Yes
#include <bits/stdc++.h>
using namespace std;
char tree[1000];
int l;
int ans = 0;
void search(int x){
if(x >= l){
return;
}
int y = x << 1;
if(tree[y] == '#' && tree[y + 1] == '#');
else{
if(tree[y] == '#' || tree[y + 1] == '#'){
ans = 1;
}
else{
search(y);
search(y + 1);
}
}
}
int main(void){
gets(tree + 1);
tree[0] = 7;
l = strlen(tree);
memset(tree + l, '#', l);
search(1);
if(ans){
puts("No");
}
else{
puts("Yes");
}
return 0;
}