题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。(要想象一下他的结构)
思路:递归判断,左子树的左子树和右子树的右子树比较,左子树的右子树和右子树的左子树比较,若相等则是,否则不是。
class Solution {
public:
bool isSym(TreeNode* left,TreeNode *right)
{
if(right==nullptr && left==nullptr) return true;
if(right==nullptr || left==nullptr) return false;
return isSym(left->left,right->right) &&isSym(left->right,right->left)
&& (left->val == right->val);
}
bool isSymmetrical(TreeNode* pRoot)
{
if (pRoot==nullptr) return true;
return isSym(pRoot->left,pRoot->right);
}
};