刷题LeetCode:101.对称二叉树

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree/

题目描述

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

题目分析

若一个树的左右子树镜像对称,那么这个二叉树就是对称的。
那么左右两个树什么情况下互为镜像?

  • 它们的两个根结点具有相同的值
  • 每个树的右子树都与另一个树的左子树镜像对称

因而,可考虑用递归实现。

代码实现

public class DuiCheng101 {


    /**
     * 迭代算法
     * 队列中添加 对称的两个节点,判断是否一致
     *
     * @param root
     * @return
     */
    public boolean isSymmetric2(TreeNode root) {
        if (root == null) {
            return true;
        }
        TreeNode left = root.left;
        TreeNode right = root.right;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(left);
        queue.offer(right);

        while (!queue.isEmpty()) {
            left = queue.poll();
            right = queue.poll();

            if (left == null && right == null) {
                continue;
            }
            if (left == null || right == null) {
                return false;
            }
            if (left.val != right.val) {
                return false;
            }

            queue.offer(left.left);
            queue.offer(right.right);

            queue.offer(left.right);
            queue.offer(right.left);

        }
        return true;
    }


    /**
     * 【递归】
     * 比较左右两棵树
     *
     * @param root
     * @return
     */
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }
        return check(root.left, root.right);
    }

    private boolean check(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        }
        if (p == null && q != null) {
            return false;
        }
        if (p != null && q == null) {
            return false;
        }

        if (p.val != q.val) {
            return false;
        }
        return check(p.left, q.right) && check(p.right, q.left);
    }


}

复杂度

  • 时间复杂度:O(n),因为遍历了整棵树,因而渐进时间复杂度为O(n)
  • 空间复杂度:递归层数不超过n,因而渐进空间复杂度为O(n)

好了,今天就到这里,感谢各位看官到这里,不如点个关注吧!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容