剑指offer系列之五十六:对称二叉树的判断
2015-12-18 15:26
239 查看
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
前面有一题是打印输出某二叉树的镜像,回想其实现的思路是:采用层序遍历的思路对每一个遍历的节点,如果其有孩子节点,那么就交换两者。直到遍历的节点没有孩子节点为止,然而此题是对二叉树木镜像的判断,明显是更简单的,只需要进行两个判断:对节点的左孩子与其兄弟节点右孩子的判断以及对节点右孩子与其兄弟节点左孩子的判断。这样就完成对对一棵二叉树是否对称的判断。下面是具体的实现代码(已被牛客AC):
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
前面有一题是打印输出某二叉树的镜像,回想其实现的思路是:采用层序遍历的思路对每一个遍历的节点,如果其有孩子节点,那么就交换两者。直到遍历的节点没有孩子节点为止,然而此题是对二叉树木镜像的判断,明显是更简单的,只需要进行两个判断:对节点的左孩子与其兄弟节点右孩子的判断以及对节点右孩子与其兄弟节点左孩子的判断。这样就完成对对一棵二叉树是否对称的判断。下面是具体的实现代码(已被牛客AC):
public class Solution { boolean isSymmetrical(TreeNode pRoot) { if (pRoot == null) return true; return isSymmetricalCore(pRoot.left, pRoot.right); } private boolean isSymmetricalCore(TreeNode left, TreeNode right) { if (left == null && right == null) return true; if (left == null || right == null) return false; if (left.val == right.val) return isSymmetricalCore(left.right, right.left) && isSymmetricalCore(left.left, right.right); return false; } }
相关文章推荐
- jQuery+JSON实现AJAX二级联动实例分析
- 前端开发一些很有用的工具
- SQLite3环境配置以及SQLite Expert Professional 3安装
- Python+Selenium+PhantomJS下载JavaScript异步加载网页
- 元素ID是个字符串变量,如何用jquery选择器获得这个对象?
- The node (XXX.XXX.XXX.XXX,XXX.XXX.XXX.XXX)has already some ScaleIO components installed
- 手机自动化测试:appium源码分析之bootstrap六 (下)
- 手机自动化测试:appium源码分析之bootstrap六 (上)
- 使用Jsoup实现简单的页面信息爬取
- JQuery移除事件
- 手机自动化测试:appium源码分析之bootstrap五 下
- 手机自动化测试:appium源码分析之bootstrap五 上
- 手机自动化测试:appium源码分析之bootstrap四
- 使用jQuery+PHP+Mysql实现抽奖程序
- css3媒体查询
- 手机自动化测试:appium源码分析之bootstrap三
- 手机自动化测试:appium源码分析之bootstrap二
- 手机自动化测试:appium源码分析之bootstrap 2
- 手机自动化测试:appium源码分析之bootstrap 1
- 条码解析的一片js