给定一个二叉树,检查它是否是自身的镜像(即,围绕其中心对称)

9 篇文章 0 订阅

给定一个二叉树,检查它是否是自身的镜像(即,围绕其中心对称)。例如,这个二叉树[1,2,2,3,4,3,3]是对称的:但是以下[ 1,2,2,null,3,null,3]不是:

package com.example.tree;

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

package com.example.tree;

/**
 * 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:
 * But the following [1,2,2,null,3,null,3] is not:
 */
public class SolutionToMirrorOfItself {

    public static boolean isSymmetric(TreeNode root) {
        return check(root,root,"root");
    }

    private static boolean check(TreeNode r1, TreeNode r2 ,String flag){
        System.out.println("flag = " + flag);
        if(r1 == null && r2 == null)
            return true;
        if(r1 == null || r2 == null)
            return false;
        if(r1.val == r2.val){
            Boolean flags = check(r1.left,r2.right,"L")&&check(r1.right,r2.left,"R");
            return flags;
        }else{
            return false;
        }
    }

    //[1,2,2,3,4,4,3]
    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        TreeNode t1 = new TreeNode(2);
        TreeNode t2 = new TreeNode(2);
        TreeNode t3 = new TreeNode(3);
        TreeNode t4 = new TreeNode(4);
        TreeNode t5 = new TreeNode(4);
        TreeNode t6 = new TreeNode(3);

        TreeNode t7 = new TreeNode(5);
        TreeNode t8 = new TreeNode(6);
        TreeNode t9 = new TreeNode(7);
        TreeNode t10 = new TreeNode(8);
        TreeNode t11 = new TreeNode(8);
        TreeNode t12 = new TreeNode(7);
        TreeNode t13 = new TreeNode(6);
        TreeNode t14 = new TreeNode(5);

        root.left = t1;
        root.right = t2;
        t1.left = t3;
        t1.right = t4;
        t2.left = t5;
        t2.right = t6;

        t3.left = t7;
        t3.right = t8;
        t4.left = t9;
        t4.right = t10;
        t5.left = t11;
        t5.right = t12;
        t6.left = t13;
        t6.right = t14;


        System.out.println(isSymmetric(root));
    }

}



备注:博主微信公众号,不定期更新文章,欢迎扫码关注。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值