给一个二叉树,请返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
参考代码(利用队列实现):
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> ret = new LinkedList<>();
if (root == null){
return ret;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()){
//求当前队列的大小
int size = queue.size();
List<Integer> list = new ArrayList<>();
//while(size>0)来控制当前每一层的数据个数
while (size > 0){
TreeNode cur = queue.poll();
if (cur != null) {
list.add(cur.val);
if (cur.left != null) {
queue.offer(cur.left);
}
if (cur.right != null) {
queue.offer(cur.right);
}
}
size--;
}
ret.add(list);
}
return ret;
}
}
运行截图: