给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool MyisSymmetric(struct TreeNode *Left, struct TreeNode *Right)
{
if (!Left && !Right) //当左右节点都为空时,时满足条件
return true;
if (!Left || !Right) //当左右节点其中有一个为空时,不满足条件
return false;
if (Right->val != Left->val) //当左右节点不相等时,不满足条件
return false;
//使用递归判断左孩子的左边和右孩子的右边,左孩子的右边和右孩子的左边是否满足条件
return MyisSymmetric(Left->left, Right->right) && MyisSymmetric(Left->right, Right->left);
}
bool isSymmetric(struct TreeNode *root)
{
if (root == NULL) //当跟节点为空时,满足条件
return true;
return MyisSymmetric(root->left, root->right);
}