定义二叉树对称的概念为 二叉树的镜像和原二叉树相同
经过变换后 原二叉树的左子树变为右子树,左子树的左子树变为右子树的右子树,左子树的右子树变为右子树的左子树
代码
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
class Solution {
bool cmpRoot(TreeNode *l,TreeNode *r){
if(l==NULL) return r==NULL;//左右都为空,返回true
if(r==NULL) return false;//左为空,右不为空 返回false
if(l->val!=r->val) return false;//值不相同不对称
return cmpRoot(l->right, r->left)&&cmpRoot(l->left, r->right);
}
public:
bool isSymmetrical(TreeNode* pRoot)
{
if(!pRoot)
return true;
return cmpRoot(pRoot->left, pRoot->right);
}
};