对称二叉树(tree_c)
【题目描述】
如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.
例:如下图中的二叉树T1是对称的,T2是不对称的。
二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。
【输入】
二叉树用顺序结构给出,若读到#则为空。
【输出】
如果二叉树是对称的,输出“Yes”,反之输出“No”。
【输入样例】
ABCDE
【输出样例】
Yes
题解
直接模拟,由于树根的编号为0,从1开始相邻两结点的编号对应其左右子树的编号,它们要么同时为空,要么同时有是两个有效节点,并且结点个数为奇数个。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    string s;
    bool t=true;
    cin>>s;
    n=s.size();
    if (n%2==0) t=false;
    for (int i=1;i<n;i+=2)
   {
        if ((s[i]=='#'&&s[i+1]!='#')||(s[i]!='#'&&s[i+1]=='#')) {
        t=false;
        break;	
       }
    }
    if (t) cout<<"Yes";else cout<<"No";
    return 0;
}
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号