class Solution {
public:

    bool ismirror(TreeNode* p1,TreeNode* p2){

        if(p1==NULL&&p2==NULL) return true;

        if(p1==NULL&&p2!=NULL) return false;

        if(p2==NULL&&p1!=NULL) return false;

        if(p1->val!=p2->val) return false;

        return ismirror(p1->left,p2->right)&&ismirror(p1->right,p2->left);
        //当前判断的两个节点如果值相等,就往后判断,否则返回false,如果当前两个节点都为空,也就是一般到达了最低端节点,路上都是对的,就返回true。
    }

    bool isSymmetrical(TreeNode* pRoot) {

        if(pRoot==NULL) return true;
        
        return ismirror(pRoot,pRoot);

    }

};