package treeAndRecursion.code101;
import treeAndRecursion.TreeNode;
/**
* @Description
* 如果同时满足下面的条件,两个树互为镜像:
*
* 它们的两个根结点具有相同的值
* 每个树的右子树都与另一个树的左子树镜像对称
*
*
* 左子树的左和右子树的右是否相等
* 左子树的右和右子树子的左是否相等
* @Date 2022/7/12 21:44
* @Author wuqichuan@zuoyebang.com
**/
public class Solution {
public boolean isSymmetric(TreeNode root) {
return check(root,root);
}
public boolean check(TreeNode left , TreeNode right){
if(left == null && right == null){
return true;
}
if(left == null || right == null){
return false;
}
//如果左右节点的值相等,则去判断
//1:左子树的左和右子树的右是否相等
//2:左子树的右和右子树子的左是否相等
if(left.val == right.val){
boolean flag1 = check(left.left,right.right);
boolean flag2 = check(left.right,right.left);
return flag1 && flag2;
}else{
return false;
}
}
}