LeetCode——101. Symmetric Tree (bfs)
2017-01-04 17:05
405 查看
思路:
通过 取出队首元素,将它的左子树与右子树的值加入到aList中,并加他们入队。
alist一次只加入该层的所有元素,这个是通过time来控制的。
将加入alist的一层所有元素进行首尾依次进行判定。
代码如下:
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null||(root.left==null&&root.right==null))
return true;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
List <Integer>aList=new ArrayList<>();
int time=queue.size();
for(int i=0; i<time;i++){
TreeNode currentNode=queue.poll();
if(currentNode.left!=null){
queue.offer(currentNode.left);
aList.add(currentNode.left.val);
}else {
aList.add(0);
}
if(currentNode.right!=null){
queue.offer(currentNode.right);
aList.add(currentNode.right.val);
}else {
aList.add(0);
}
}
//开始验证
int l=aList.size();
for(int i=0;i<l/2;i++){
if(aList.get(i)!=aList.get(l-1-i)){
return false;
}
}
}
return true;
}
}
通过 取出队首元素,将它的左子树与右子树的值加入到aList中,并加他们入队。
alist一次只加入该层的所有元素,这个是通过time来控制的。
将加入alist的一层所有元素进行首尾依次进行判定。
代码如下:
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null||(root.left==null&&root.right==null))
return true;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
List <Integer>aList=new ArrayList<>();
int time=queue.size();
for(int i=0; i<time;i++){
TreeNode currentNode=queue.poll();
if(currentNode.left!=null){
queue.offer(currentNode.left);
aList.add(currentNode.left.val);
}else {
aList.add(0);
}
if(currentNode.right!=null){
queue.offer(currentNode.right);
aList.add(currentNode.right.val);
}else {
aList.add(0);
}
}
//开始验证
int l=aList.size();
for(int i=0;i<l/2;i++){
if(aList.get(i)!=aList.get(l-1-i)){
return false;
}
}
}
return true;
}
}
相关文章推荐
- 期末作业——石头剪刀布游戏
- Vue.js的初步使用
- Chain推出智能合约语言Ivy
- 2016
- log4j配置参数详解——按日志文件大小、日期切分日志文件
- 蓝桥杯-入门训练-A+B问题
- 用Python写网络爬虫系列(二)------数据获取
- 9.关于Unicode字符集
- idea使用快捷键
- 根据经纬度求距离
- leetcode-122. Best Time to Buy and Sell Stock II
- 如何使用ArcGISServer服务直接发布地图
- 基于svg.js实现可编辑的图像(1)
- c# delegate
- C# 获取本地IP地址信息
- 微信登录及注意事项
- php获取远程json
- Qt提升对SQLite数据库的读写速度
- 用scikit-learn进行LDA降维
- Eclipse配置C++11环境详细介绍