美文网首页
镜像二叉树(LeetCode101. 对称二叉树)

镜像二叉树(LeetCode101. 对称二叉树)

作者: 雁阵惊寒_zhn | 来源:发表于2020-11-16 09:15 被阅读0次

题目

解析

  1. 层次遍历的方式。按层次遍历二叉树,观察当前层次的节点是否成折叠对称的关系,如果不是直接判断不是镜像二叉树。否则继续遍历下一层次 。
  2. 递归实现。从根节点起,比较起左右孩子是否成镜像关系,如果不是,直接判断不是镜像二叉树,否则递归的方式去比较左孩子的左孩子与右孩子的右孩子,左孩子的右孩子与右孩子的左孩子的镜像关系,直到叶子节点。

代码

使用递归实现的方式,代码简单易懂。

public boolean isSymmetric(TreeNode root) {
    if(null == root){
        return true;
    }
    return isMirror(root.left, root.right);
}
private boolean isMirror(TreeNode r1, TreeNode r2){
    //判断传入的两个节点是否属于镜像关系
    //如果两个节点都为null,结束递归调用
    if(r1 == null && r2 == null){
        return true;
    }
    //如果不符合镜像关系直接返回结果
    if(r1 != null  && r2 == null){
        return false;
    }
    if(r2 != null && r1 == null){
        return false;
    }
    if(r1.val != r2.val){
        return false;
    }
    //递归左孩子的左孩子与右孩子的右孩子
    boolean m1 = isMirror(r1.left, r2.right);
    //递归左孩子的右孩子与右孩子的左孩子
    boolean m2 = isMirror(r1.right, r2.left);
    return m1 && m2;
}

相关文章

  • 【LeetCode】101-对称二叉树

    对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的...

  • 2019-04-09 BFS广度优先搜索刷题Day1

    Leetcode 101 对称二叉树 题目描述: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2...

  • Java日记2018-06-22

    二叉树的镜像 28 对称的二叉树 栈的压入、弹出序列

  • 二叉树的相似、镜像问题

    二叉树的镜像: 100.Same Tree(二叉树是否相同) 101.Symmetric Tree(二叉树是否对称)

  • 27、28:二叉树的镜像

    习惯github pages风格的请看我的另一篇博客 题目27: 二叉树的镜像 对称的二叉树 题目:二叉树的镜像 ...

  • Swift 对称二叉树 - LeetCode

    题目: 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对...

  • LeetCode 101. 对称二叉树 | Python

    101. 对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3]...

  • Day49:是否为对称二叉树

    def is_Symmetic(root):'''Day49:是否为对称二叉树给定一个二叉树,检查它是否是镜像对称...

  • 每周 ARTS 第 8 期

    1. Algorithm 101. 对称二叉树(简单) 描述: 给定一个二叉树,检查它是否是镜像对称的。 示例: ...

  • 101. 对称二叉树

    101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对...

网友评论

      本文标题:镜像二叉树(LeetCode101. 对称二叉树)

      本文链接:https://www.haomeiwen.com/subject/kmglvktx.html