题目
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
题解
广度搜索算法应用,将当前层的数据保存到Queue中,并记录当前层数据个数,出队列的同时,将该节点的子节点入队列,直到该层数据全部出队列,然后再进行下一层数据遍历。
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if (root == null) {
return res;
}
Queue<TreeNode> qu = new LinkedList<>();
qu.offer(root);
while (!qu.isEmpty()) {
int levelSize = qu.size();
List<Integer> inData = new ArrayList<>();
while (levelSize-- > 0) {
TreeNode td = qu.poll();
inData.add(td.val);
if (td.left != null) {
qu.offer(td.left);
}
if (td.right != null) {
qu.offer(td.right);
}
}
res.add(inData);
}
return res;
}