/*
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; }
};