判断一棵二叉树是否是对称的

题目描述

请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

示例1

输入

{8,6,6,5,7,7,5}

返回值

true

示例2

输入

{8,6,9,5,7,7,5}</pre>

返回值

false

思路:

如果一棵二叉树的镜像是其本身,则说明这是一棵对称二叉树
故:

  1. 如果root 为空,则直接返回true
  2. 如果root 不为空,则需要判断:
    (1) root1.left ?= root2.right
    (2) root2.left ?= root1.right
    这里root1和root2都是root,因为要判断root与root是否镜像

code:

public class solution{
boolean isSymmetrical(TreeNode pRoot) {
        if(pRoot == null){
            return true;
        }
        return isMirror(pRoot,pRoot);
            
    }
// 辅助函数,判断两棵树是否为镜像
boolean isMirror(TreeNode n1,TreeNode n2){
// 递归终止条件:
//如果遍历到n1和n2都为null还没有返回false,则说明它俩确实是镜像
if(n1==null && n2==null) {return true;}
// 如果n1和n2中存在一个等于null而另一个不为null,则返回false
if(n1 == null || n2==null) {return false;}
//如果n1、n2都不为null,但是它俩的value不相等,也返回false
if(n1.val != n2.val) {return false;}
// 开始递归
return isMirror(n1.left, n2.right) && isMirror(n1.right,n2,left);
}
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述: 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,...
    小刘一定要努力阅读 1,216评论 0 0
  • 要求:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如:二叉树 ...
    是新来的啊强呀阅读 1,252评论 0 1
  • 判断一棵镜像二叉树 思路1. 使用层次遍历,逐层检查对称性。这是最直观的思路对称性与结点的位置和结点的值有关,在【...
    9_SooHyun阅读 1,351评论 0 0
  • 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的 解题思路 借助遍历,...
    刻苦驴哝阅读 1,144评论 0 0
  • 题目描述: 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,...
    小刘一定要努力阅读 1,234评论 0 0

友情链接更多精彩内容