题目描述:给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
题目示例:例如:下面这棵二叉树是对称的
1
/ \
2 2
/ \ / \
3 4 4 3
下面这棵二叉树不对称。
1
/ \
2 2
\ \
3 3
解题思路:因为我们比较的是两个子树是否对称,所以可以用递归的方法。
bool isSymmetric(TreeNode* root) {
// write code here
bool ans = true;
if (!root)
return ans;
TreeNode *left,*right;
left = root->left,right = root->right;
return isEqual(left, right);
}
bool isEqual(TreeNode *left,TreeNode *right)
{
if(left==nullptr&&right==nullptr)
return true;
if((left==nullptr&&right!=nullptr)||(left!=nullptr&&right==nullptr)||(left->val!=right->val))
return false;
TreeNode *leftLeft,*leftRight,*rightLeft,*rightRight;
leftLeft = left->left;
leftRight = left->right;
rightLeft = right->left;
rightRight = right->right;
return isEqual(leftLeft, rightRight) && isEqual(leftRight, rightLeft);
}