请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

bool isSymmetrical(TreeNode* pRoot)
    {
        if (pRoot == nullptr)
            return true;
        return isSymmetrical(pRoot, pRoot);
    }

    bool isSymmetrical(TreeNode* pRoot1, TreeNode* pRoot2)
    {
        //正常退出递归标志:当左右节点同时指向空时,递归返回true退出
        if (pRoot1 == nullptr && pRoot2 == nullptr)
            return true;
        //异常退出递归标志:当左右节点不同时指向空时,递归返回false退出
        if (pRoot1 == nullptr || pRoot2 == nullptr)
            return false;
        //若当前节点值相等,则继续进行递归
        if(pRoot1->val!=pRoot2->val)
            return false;
        //进入递归过程,判断以当前节点为根节点的左右是否等于该节点右左
        return isSymmetrical(pRoot1->left, pRoot2->right) && isSymmetrical(pRoot1->right, pRoot2->left);
    }