Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
/ \
9 20
/ \
15 7

return its level order traversal as:

[
[3],
[9,20],
[15,7]
] 实现的关键在于定义两个标记位和队列:
1、标志位last和end。last为记录的是本层次的最后一个最后一个结点,end用于寻找下一层的最后一个结点。
2、队列是用于存储每个结点。
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list = new ArrayList<>();
List<Integer> lst = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
TreeNode last =root;
TreeNode end = null;
while(!queue.isEmpty()){
TreeNode t = queue.remove();
if(t!=null){
lst.add(t.val);
if(t.left != null){
queue.add(t.left);
end = t.left;
}
if(t.right != null){
queue.add(t.right);
end = t.right;
}
if(t == last ){
list.add(lst);
last =end;
lst = new ArrayList<>();
}
}
}
return list;
}
}

最新文章

  1. 【iBeacon】iBeacon前沿初探技术备忘
  2. 日志系统实战(一)—AOP静态注入
  3. github生成静态博客
  4. 《Paxos Made Simple》翻译
  5. MSMQ
  6. 虚幻4外包团队-推荐非常全面的的Unreal教程
  7. 转载:JavaSE之反射
  8. [课程设计]Scrum 1. 8多鱼点餐系统开发进度(完善整个订餐页面工作)
  9. C# 生成解决方案失败,点击项目重新生成报找不到命名空间
  10. mac提升yosemite后php 扩展修复
  11. Oracle Day04 子查询
  12. aix下java程序运行问题
  13. spring容器启动扩展
  14. 遥远的国度 bzoj3083
  15. boost多线程入门介绍
  16. [20180408]那些函数索引适合字段的查询.txt
  17. Java基础编程题——水仙花数
  18. 20155302 2016-2017-2 《Java程序设计》第九周学习总结
  19. [UE4]UMG编辑器:中心点对齐
  20. 使用 TXT 文本存储

热门文章

  1. POJ 1270 Following Orders (拓扑排序,dfs枚举)
  2. Sublime Text 3配置与vim模式(待完整)
  3. DML、DDL、DCL区别
  4. 李洪强iOS开发之OC[014] -对象的存储细节
  5. Photoshop:制作方块背景
  6. (转)java性能调优
  7. NSArray 迭代
  8. Haxe数据类型
  9. 【转载】R6034错误,C Runtime Error
  10. Android开发之创建App Widget和更新Widget内容