- 题目描述
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
- 思路
如果一棵树是对称的那么它的左右子树互为镜像。
- C++实现
class Solution {
public:
bool isSymmetrical(TreeNode* pRoot){
if(pRoot==NULL)return true;
return isMirror(pRoot->left,pRoot->right);
}
//判断树left与right是否是镜像
bool isMirror(TreeNode* left,TreeNode* right){
if(left==NULL)return right==NULL;
if(right==NULL)return false;
if(left->val!=right->val)return false;
return isMirror(left->left,right->right)
&&isMirror(left->right,right->left);
}
};