65. Symmetric Tree
2016-01-23 16:29
337 查看
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
But the following is not:
Note:
Bonus points if you could solve it both recursively and iteratively.
分析:题目要求判断给定的一个二叉树是不是对称二叉树。
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
分析:题目要求判断给定的一个二叉树是不是对称二叉树。
/** * Step1:首先判断root是否为空结点或无孩子节点,若是则返回true; * Step2:判断root是否只有一个孩子,若是则返回false; * Step3:判断左右孩子结点的值是否相等,若不是则返回false; * Step4:调用isSameTree()方法,判断两个子树是否对称。 * */ public boolean isSymmetric(TreeNode root) { if(root == null || root.left==null && root.right == null){ return true; }else if(root.left==null || root.right == null){ return false; }else{ if(root.left.val != root.right.val){ return false; }else{ return isSymmetricTwoTree(root.left,root.right); } } } /** * 判断根节点的左右子树是否对称 */ public boolean isSymmetricTwoTree(TreeNode p, TreeNode q) { /*两个都为null,返回true*/ if(p==null && q==null){ return true; }else if(p==null || q==null){/*只有一个为null。另一个不为null则返回false*/ return false; }else{ if(p.val == q.val){ return isSymmetricTwoTree(p.left,q.right) && isSymmetricTwoTree(p.right,q.left); }else{ return false; } } }
相关文章推荐
- Android系统学习笔记
- bash_profile和bashrc区别
- sizeof(数组名)和sizeof(指针)
- 一致性哈希算法
- vector:
- android开发工具类总结(一)
- Android 模拟器启动报错:android failed to open framebuffer ( no such file or directory )
- Google Now Launcher 定制
- 【Android】Replace "..." with ellipsis character (…, &&;#8230;) ?
- VVDocumenter Xcode 插件失效问题
- caffe学习3——layers
- Python操作SQLite/MySQL/LMDB/LevelDB
- Ebean查找,条件仅针对目标表格join的表格的信息举例
- ubuntu使用技巧——windows和ubuntu双系统的注意问题
- hdu 1300 Pearls(dp)
- Data Binding 摘要学习
- vector 常用函数
- 2015年读过的书
- RedHat Enterprise Linux6.4 使用CentOS yum源
- Cannot locate the chosen ObjectFactory implementation: spring