题目链接:https://leetcode.com/problems/binary-tree-level-order-traversal/
Given the root of a binary tree, return the level order traversal of its nodes’ values. (i.e., from left to right, level by level).
【Translate】: 给定二叉树的根,返回其节点值层序遍历。(即从左到右,逐层排列)。
【测试用例】:
示例1:


【条件约束】:

原题解来自于 sgallivan 的 JS, Python, Java, C++ | Easy BFS Queue Solution w/ Explanation.
二叉树级顺序遍历通常推荐使用队列数据结构的广度优先搜索(BFS)方法。当我们处理一个节点(curr)时,我们将按我们想要遍历的顺序(在本例中,从左到右)将该节点的子节点推到队列的末尾。通过这种方式,我们将在完成遍历该行的同时完成将下一行放入队列。
为了帮助我们跟踪行,我们只需将主循环嵌套在另一个循环中。在外部循环的开始,我们捕获队列长度,它将告诉我们行有多长。然后,我们可以遍历这些节点,每次将它们从队列的前端取出,然后处理任何行尾指令。在这个问题中,这将意味着将当前行数组(row)推到我们的答案数组(ans)上。
我们将继续这个过程,直到队列为空,这时我们将到达二叉树的末尾,并返回ans。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public List> levelOrder(TreeNode root) {List> ans = new ArrayList<>();if(root == null) return ans;Queue queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int qlen = queue.size();List row = new ArrayList<>();for(int i = 0; i < qlen; i++){TreeNode curr = queue.poll();row.add(curr.val);if (curr.left != null) queue.add(curr.left);if (curr.right != null) queue.add(curr.right);}ans.add(row);}return ans;}
}

[1] Java Deque接口 使用方法(栈、队列、双端队列)| CSDN
[2] Java 双端队列,队列,栈 — Deque使用指南 | CSDN