美文网首页
《剑指offer第二版》面试题28:对称二叉树(java)

《剑指offer第二版》面试题28:对称二叉树(java)

作者: castlet | 来源:发表于2020-04-07 21:44 被阅读0次

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。如果一个二叉树和它的镜像一样,那么他是对称的。

解题思路:

  1. 前序做遍历是先访问根节点,再访问左子树和右子树。我们可以再定义一种遍历方式,先访问根节点,再访问右子树,再访问左子树。
  2. 通过这两种遍历方式,判断每次遍历的节点是否一样,一样的话就说明是对称的。

代码

boolean isSymmertrical(TreeNode root) {
    if (root == null) {
        return true;
    }
    return isSymmertrical(root.left, root.right);
}
boolean isSymmertrical(TreeNode root1, TreeNode root2) {
    if (root1 == null && root2 == null) {
        return true;
    }
    if (root1 == null || root2 == null) {
        return false;
    }

    if (root1.value != root2.value) { // 判断根节点
        return false;
    }
    return isSymmertrical(root1.left, root2.right) &&
            isSymmertrical(root1.right, root2.left);
}

相关文章

网友评论

      本文标题:《剑指offer第二版》面试题28:对称二叉树(java)

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