Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3]
is symmetric:
1
/ \
2 2
/ \ / \
3 4 4 3
class Solution {
public:
bool isSymmetric(TreeNode* root) {
// 对称树特点: 孩子要有都有 而且 值要一样 这种想法是错误的 得到的是
/*
* 1
* 2 2
* 3 4 4 3 这种就无法判断 即
* 不能对一颗树的左右节来判断 而是对(left->left,right->right, left->right, right->left)这一对进行判断
* */
if(!root) return true;
return isSym(root->left, root->right);
}
bool isSym(TreeNode *left, TreeNode *right){
if((left && !right) || (!left && right)) return false;
if(!left && !right) return true;
return left->val==right->val && isSym(left->left, right->right)
&& isSym(left->right, right->left);
}
};