1. package treeAndRecursion.code101;
    2. import treeAndRecursion.TreeNode;
    3. /**
    4. * @Description
    5. * 如果同时满足下面的条件,两个树互为镜像:
    6. *
    7. * 它们的两个根结点具有相同的值
    8. * 每个树的右子树都与另一个树的左子树镜像对称
    9. *
    10. *
    11. * 左子树的左和右子树的右是否相等
    12. * 左子树的右和右子树子的左是否相等
    13. * @Date 2022/7/12 21:44
    14. * @Author wuqichuan@zuoyebang.com
    15. **/
    16. public class Solution {
    17. public boolean isSymmetric(TreeNode root) {
    18. return check(root,root);
    19. }
    20. public boolean check(TreeNode left , TreeNode right){
    21. if(left == null && right == null){
    22. return true;
    23. }
    24. if(left == null || right == null){
    25. return false;
    26. }
    27. //如果左右节点的值相等,则去判断
    28. //1:左子树的左和右子树的右是否相等
    29. //2:左子树的右和右子树子的左是否相等
    30. if(left.val == right.val){
    31. boolean flag1 = check(left.left,right.right);
    32. boolean flag2 = check(left.right,right.left);
    33. return flag1 && flag2;
    34. }else{
    35. return false;
    36. }
    37. }
    38. }