【题目描述】
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
【解答】
其实对称就是变相的判断一下回文数(真的当时就这么想的)
简单的说就是:
左右子节点的值要相等;
左右子节点的子树要对称相等;
(下面贴的是官方的解答,觉得比自己写的简洁)
class Solution {
public:
bool check(TreeNode *p, TreeNode *q) {
if (!p && !q) return true;
if (!p || !q) return false;
return p->val == q->val && check(p->left, q->right) && check(p->right, q->left);
}
bool isSymmetric(TreeNode* root) {
return check(root, root);
}
};