/*
struct TreeNode {
int val;
struct TreeNode left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
bool isSymmetrical(TreeNode
pRoot)
{
return isTwoNodeSym(pRoot, pRoot);
}
bool isTwoNodeSym(TreeNode *p1, TreeNode *p2)
{
if(!p1 && !p2) //两棵树均为均为空树
return true;

    if(!p1 || !p2) //其中一棵树为空,则返回false
        return false;

    if(p1->val == p2->val) //若两个结点相等,则进行递归
    {
        //若两棵树的根节点镜像,并且它们的左右孩子分别镜像,则这两棵树镜像
        return isTwoNodeSym(p1->left, p2->right) && isTwoNodeSym(p1->right, p2->left);
    }
    return false;
}

};