栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode-101-对称二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-101-对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

1.1递归

public boolean isSymmetric(TreeNode root) {
        if( root == null) {
            return true;
        }
        //调用递归方法
        return deepCheck(root.left,root.right);
    }
    boolean deepCheck(TreeNode left, TreeNode right) {
        //终止:两个为空、有一个为空、不相等
        if(left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        if(left.val != right.val) {
            return false;
        }
        return deepCheck(left.left, right.right) && deepCheck(left.right, right.left);
    }

1.2队列

public boolean isSymmetric(TreeNode root) {
        Queue q = new LinkedList();
        TreeNode u = root.left;
        TreeNode v = root.right;
        if(root == null || (u == null && v == null)) {
            return true;
        }

        q.offer(u);//根结点的左右结点放入队列
        q.offer(v);

        while (!q.isEmpty()) {//如果队列不为空
            u = q.poll();
            v = q.poll();
            if(u == null && v == null) {
                continue;
            }
            if ((u == null || v == null) || (u.val != v.val)) {
                return false;
            }
            q.offer(u.left);
            q.offer(v.right);

            q.offer(u.right);
            q.offer(v.left);
        }
        return true;
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860366.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号