博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer(61):对称的二叉树
阅读量:4287 次
发布时间:2019-05-27

本文共 1109 字,大约阅读时间需要 3 分钟。

题目描述

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

分析

考虑将二叉树复制一份,如果二叉树是对称的,那么对于同一位置上的节点(记为root1和root2),必须同时满足这些条件:

  1. root1和root2的value值相等
  2. root1的left节点等于root2的right节点
  3. root1的right节点等于root2的left节点

牛客AC:

/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {
/** * 请实现一个函数,用来判断一颗二叉树是不是对称的。 * 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 * @param pRoot * @return */ boolean isSymmetrical(TreeNode pRoot) { return isSymmetrical(pRoot, pRoot); } boolean isSymmetrical(TreeNode pRoot1, TreeNode pRoot2) { if(pRoot1 == null && pRoot2 == null) // 同时为空,true return true; if(pRoot1 == null || pRoot2 == null) // 只有一个为空,false return false; if(pRoot1.val != pRoot2.val) // 节点的值不相等,false return false; // 左节点等于右节点,右节点等于左节点 return isSymmetrical(pRoot1.left, pRoot2.right) && isSymmetrical(pRoot1.right, pRoot2.left); }}

参考

1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社

转载地址:http://pkxgi.baihongyu.com/

你可能感兴趣的文章
java之文件上传和下载的实现
查看>>
java之实现增删改查的下案例、获取元数据、DBUtils
查看>>
java之图形绘制
查看>>
java之Filter过滤器、filterConfig、禁用jsp缓存、设置图片缓存时间
查看>>
java之struts2(一)
查看>>
MAC之自媒体相关、广告联盟、自由职业
查看>>
java之listener监听
查看>>
javaBean、BeanUtils、BeanInfo内省
查看>>
java相关的生命周期
查看>>
java之权限控制相关、缓存禁用
查看>>
iOS之cocoaPods发布产品详解
查看>>
java之国际化
查看>>
java 之注解
查看>>
java之struts(二)国际化、拦截器
查看>>
iOS之真机和模拟器的CPU架构器架构\Xcode中和symbols有关的几个设置
查看>>
java之maven的使用/eclipse中maven项目部署到tomcat的几种方法
查看>>
iOS之常用分类frame、button、
查看>>
微信小程序常用快捷键
查看>>
小程序中相关控件的使用、样式的使用、flex布局
查看>>
开篇词
查看>>