题目:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:给定二叉树: [3,9,20,null,null,15,7],

返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
这题相对昨天那题多了个层次的概念,不过本质上还是一样的。
还是利用队列来实现 BFS 遍历, 只是在遍历的需要通过当前队列的 size 来进行层次的判断。
每一层遍历的时候,拿到当前层的数量,以这个数量来作为队列里面每一层的分割线。
听起来可能有点拗口,还是直接看代码,应该挺好理解:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList();
if (root == null) {
return res;
}
Queue<TreeNode> nodeQueue = new LinkedList();
nodeQueue.add(root);
while (!nodeQueue.isEmpty()) {
int len = nodeQueue.size(); //拿到一层的数量,像第一层就1个
List<Integer> curList = new ArrayList();
while (len > 0) { //遍历这一层的所有节点
TreeNode node = nodeQueue.poll();
curList.add(node.val);
if (node.left != null) {
nodeQueue.add(node.left);
}
if (node.right != null) {
nodeQueue.add(node.right);
}
len--;
}
res.add(curList);
}
return res;
}
}
本文介绍了一种使用队列实现的二叉树层次遍历算法。通过该算法可以实现从上到下按层打印二叉树,并确保同一层节点按从左到右的顺序输出。文中提供了一个具体的示例及其实现代码。
1188

被折叠的 条评论
为什么被折叠?



