(剑指offer)对称的二叉树

对称的二叉树

题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
在这里插入图片描述
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
在这里插入图片描述

bool isSymmetric(TreeNode* root) {
	//如果是空树
	if (!root) {
		return true;
	}
	return Helper(root->left, root->right);
}
//此函数比较二叉树中位置对称的两个节点
bool Helper(TreeNode* left, TreeNode* right) 
{
	//结束条件1:如果对称两个节点都为空,则返回true
	if (!left && !right) {
		return true;
	}
	//结束条件2:如果单独一个节点为空,另一个节点不为空,则返回false
	if (!left || !right) {
		return false;
	}
	//结束条件3:对称节点间的val值不等,则返回false
	if (left->val != right->val) {
		return false;
	}
	//该层符合对称二叉树的要求,开始比较下一层
	return Helper(left->left, right->right) && Helper(left->right, right -> left);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值