题目描述
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解题思路
利用队列存储每层节点,然后获取每层节点值。
队列的使用方式值得借鉴,这也是解决最短路径比较好的实现方式,可以不用遍历完所有的节点就能求出最短路径。即某层节点下不再有子节点表示已经寻找到最短路径了。
解题代码
广度优先算法:
public List> levelOrder(TreeNode root) {
if(root==null) {
return new ArrayList>();
}
List> res = new ArrayList<>();
Queue queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()){
int size = queue.size();
List list = new ArrayList<>();
while (size>0){
TreeNode treeNode = queue.poll();
list.add(treeNode.val);
if (treeNode.left != null) {
queue.offer(treeNode.left);
}
if (treeNode.right != null){
queue.offer(treeNode.right);
}
size--;
}
res.add(list);
}
return res;
}