牛客题目链接
1. 题目考点
- bfs
- 如何确定每层最后一个节点
- 类似题目:二叉树的字行层次遍历
2. 考点解析
- 由于此题简单,直接给出答案(具体分析看类似题目)
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if (pRoot == null) return res;
ArrayList<Integer> tempArr = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
int curLevelCnt = 1, nextLevelCnt = 0;
queue.offer(pRoot);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
tempArr.add(node.val);
curLevelCnt -= 1;
if (node.left != null) {
queue.offer(node.left);
nextLevelCnt += 1;
}
if (node.right != null) {
queue.offer(node.right);
nextLevelCnt += 1;
}
if (curLevelCnt == 0) {
curLevelCnt = nextLevelCnt;
nextLevelCnt = 0;
res.add(new ArrayList<>(tempArr));
tempArr.clear();
}
}
return res;
}