题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意:如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的
解题思路
class Solution {
public:
TreeNode* func(TreeNode* root){
if(root == NULL) return NULL;
TreeNode* left = func(root->left);
TreeNode* right = func(root->right);
TreeNode* r = new TreeNode(root->val);
r->left = right;
r->right = left;
return r;
}
bool equal(TreeNode* r1,TreeNode* r2){
if(r1 == NULL && r2 == NULL) return true;
if((r1==NULL&&r2!=NULL) || (r1!=NULL&&r2==NULL)) return false;
if(r1->val != r2->val) return false;
if(!equal(r1->left,r2->left)) return false;
return equal(r1->right,r2->right);
}
bool isSymmetrical(TreeNode* pRoot)
{
TreeNode* root = func(pRoot);
return equal(root,pRoot);
}
};