题干:
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3]
是对称的。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下面这个 [1,2,2,null,3,null,3]
则不是镜像对称的:
1 / \ 2 2 \ \ 3 3
说明:
如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
ac代码如下
class Solution {
public:
bool isSymmetric(TreeNode* root)
{
if(!root)
return true;
else
return Judge(root->left,root->right);
}
bool Judge(TreeNode *l,TreeNode *r)
{
if(l == NULL && r == NULL)
return true;
else if((l == NULL && r != NULL) || (l != NULL && r == NULL))
return fasle;
else if(l && r && l->val == r->val)
return fasle;
else
return Judge(l->left,r->right) && Judge(l->right,r->left);
}
};