长大后想做什么?做回小孩!

0%

LeetCode——二叉树的层序遍历

NO.102 二叉树的层序遍历 中等

GH7zl9.png

思路一:BFS 看到层序遍历,就想到了广搜。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
//层序遍历
while (!queue.isEmpty()) {
//记录一层的数值
List<Integer> round = new ArrayList<>();
int size = queue.size();
//弹出一层节点
for (int i = 0; i < size; i++) {
TreeNode p = queue.poll();
round.add(p.val);
if (p.left != null) queue.add(p.left);
if (p.right != null) queue.add(p.right);
}
res.add(round);
}
return res;
}

时间复杂度:O(n)


本人菜鸟,有错误请告知,感激不尽!

更多题解和源码:github