Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
Example 1:
Input: root = [1,2,2,3,4,4,3]
Output: true
Example 2:
Input: root = [1,2,2,null,3,null,3]
Output: false
Constraints:
The number of nodes in the tree is in the range [1, 1000].
-100 <= Node.val <= 100
Follow up: Could you solve it both recursively and iteratively?
非对称二叉树:
1、只有一颗子树
2、节点左孩子的值不等于右孩子的值或者右孩子的值不等于左孩子的值
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(root==NULL){
return true;
}
return isHerySymmetric(root->left, root->right);
}
bool isHerySymmetric(TreeNode*left,TreeNode*right){
if(left==NULL&&right==NULL){
return true;
}
if(left==NULL || right==NULL || left->val!=right->val){
return false;
}
return isHerySymmetric(left->left, right->right) && isHerySymmetric(left->right, right->left);
}
};