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