给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3]
是对称的。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下面这个 [1,2,2,null,3,null,3]
则不是镜像对称的:
1 / \ 2 2 \ \ 3 3
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isMirror(struct TreeNode* t1, struct TreeNode* t2){
if(t1 == NULL && t2 == NULL) return true;
if(t1 == NULL || t2 == NULL) return false;
return (t1 -> val == t2 -> val) && isMirror(t1 -> left, t2 -> right) && isMirror(t1 -> right, t2 -> left);
}
bool isSymmetric(struct TreeNode* root) {
//满足对称的条件,根节点的值相等,每棵树的右子树均与另一棵树的左子树对称
return isMirror(root, root);
}