leetcode-java-101. Symmetric Tree
2016-06-30 21:21
525 查看
思路一:
递归:1ms
先判断左右子节点是否相等,不等就返回false
相等则判断左节点的左孩子和右节点的右孩子是否相等,且判断左节点的右孩子和右节点的左孩子是否相等。
思路二:
迭代
递归:1ms
先判断左右子节点是否相等,不等就返回false
相等则判断左节点的左孩子和右节点的右孩子是否相等,且判断左节点的右孩子和右节点的左孩子是否相等。
思路二:
迭代
public class Solution { public boolean isSymmetric(TreeNode root) { if(root == null) { return true; } else { return isSame(root.left,root.right); } } public boolean isSame(TreeNode left,TreeNode right) { if(left == null && right == null) { return true; } if(left == null || right == null) { return false; } if(left.val != right.val) { return false; } return isSame(left.left,right.right) && isSame(left.right,right.left); } }
public class Solution { public boolean isSymmetric(TreeNode root) { if(root == null) { return true; } Queue<TreeNode> left = new LinkedList<TreeNode>(); Queue<TreeNode> right = new LinkedList<TreeNode>(); if(root.left != null) { left.offer(root.left); } if(root.right != null) { right.offer(root.right); } while(!left.isEmpty() && !right.isEmpty()) { TreeNode l = left.poll(); TreeNode r = right.poll(); if(r == null && l == null) { continue; } if(r == null || l == null) { return false; } if(l.val != r.val) { return false; } left.offer(l.left); left.offer(l.right); right.offer(r.right); right.offer(r.left); } if(left.isEmpty() && right.isEmpty()) { return true; } else { return false; } } }
相关文章推荐
- 设置Myeclipse中的代码格式化、注释模板及保存时自动格式化
- spring-poi-excle往单元格写入图片
- Java Sort
- Myeclipse安装 配置Maven
- struts2利用拦截器解决重复提交问题
- Java - HashMap
- JAVA IO流
- struts结果类型
- Java双向链表的创建结点,清空链表,添加结点,删除结点
- struts2在拦截器中改变返回的ResultCode
- Java Web实战02--Maven学习以及如何建立动态网页工程
- Java前台模拟后台数据
- struts2自定义拦截器和方法拦截器
- Java面向对象常见概念
- DataUtilitls.java
- spring中事物参数与事物隔离级别
- java 已知一个Date(),获取前一天和后一天
- POI---JAVA导出Excel文件<一>创建Excel文件
- 使用java.util.List.subList时最好小心点
- Maven install 报Fatal error compiling: tools.jar not found错误的处理