信息学奥赛一本通T1368:树与二叉树 对称二叉树

【题目描述】如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.例:如下图中的二叉树T1是对称的,T2是不对称的。二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。【输入】二叉树用顺序结构给出,若读到#则为空。【输出】如果二叉树是对称的,输出“Ye

信息学奥赛一本通T1368:对称二叉树

【题目描述】

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

例:如下图中的二叉树T1是对称的,T2是不对称的。

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

【输入】

二叉树用顺序结构给出,若读到#则为空。

【输出】

如果二叉树是对称的,输出“Yes”,反之输出“No”。

【输入样例】

ABCDE

【输出样例】

Yes

【源程序】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 1001
#define MOD 123
#define E 1e-6
using namespace std;
char s[N];
int main()
{
    cin>>s;
    int len=strlen(s);
    s[len]='#';

    int flag=true;
    for(int i=1;i<len;i+=2){
        if( (s[i]=='#'&&s[i+1]!='#') || (s[i+1]=='#'&&s[i]!='#') )
        {
            flag=false;
            break;
        }
    }
    if(flag)
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;
    return 0;
}

 

信息学奥赛一本通T1368:树与二叉树 对称二叉树 归属于 树与二叉树,更多同类题解源程序见:树与二叉树 和 对称二叉树

0 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章