思路:这道题的递归思路比上一道题(100-相同的数)难想到一些;简单地说把它分解成子问题就是,结点A的左孩子要与结点B的右孩子对称,结点A的右孩子要与结点B的左孩子对称;
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(root==NULL)
{
return true;
}
return ismirror(root->left,root->right);
}
bool ismirror(TreeNode* p,TreeNode* q){
if(!p&&!q)//都为NULL
return true;
if(!p||!q)//有一个为NULL
return false;
if(p->val==q->val)//若两结点值相等,则比较结点A的左孩子与结点B的右孩子 和 结点A的右孩子和结点B的左孩子
{
return ismirror(p->left,q->right)&&ismirror(p->right,q->left);
}
return false;
}
};