对称的二叉树

/*
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) {
        if (pRoot == NULL) return 1;
        return solve(pRoot->left, pRoot->right);
    }

    bool solve(TreeNode* leftNode, TreeNode* rightNode) {
        if (!leftNode && !rightNode) return 1;
        if (!leftNode || !rightNode) return 0;
        if (leftNode->val == rightNode->val)
            return solve(leftNode->left, rightNode->right) && solve(leftNode->right,
                    rightNode->left);
        else {
            return 0;
        }
    }
};