对称二叉树

题目描述

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

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

输入

输入二叉树的顺序结构(#表示空格)

输出

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

样例输入

ABCDE

样例输出

Yes

我的思路:

这是二叉树,根据题意得:两棵子树皆为空,或者皆不空,则称该二叉树即是对称的。所以输入的字符串中,第一位为二叉树的根,接下去每两位为一个节点的左右子树,只要这两位都不为‘#’ 或者都为‘#’即为对称。

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
	string s;
	cin>>s;
	int i;
	for(i=1;i<s.length();i+=2){
		if(s[i]!='#' && s[i+1]=='#' || s[i+1]!='#' && s[i]=='#' ||s[i+1]=='\0'){
        //判断是否对称,如果有不满足条件的,即为不对称,输出“NO”并退出
			printf("No\n");
			break;
		}
	}
	if(i>=s.length())printf("Yes\n");//如果没有中途退出,则说明都满足条件,该二叉树对称输出“Yes”
	return 0;
}

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-05 04:14
已编辑
真烦好烦真烦:看着感觉好强啊,这都过不了吗
投递字节跳动等公司10个岗位 面试中的破防瞬间
点赞 评论 收藏
分享
05-24 14:12
门头沟学院 Java
点赞 评论 收藏
分享
就只能3个月,但是要求长期全职实习
Swaying:你确实是能长期实习啊,但是你那时候有事也没啥办法嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务