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

0%

LeetCode——二叉树的层序遍历II

NO.107 二叉树的层序遍历II 简单

GxWE01.png

思路一:层序遍历,头插法保存每一层 还是普通的层序遍历,区别就是保存每一层遍历结果的时候,头插法放入结果集。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> res = new LinkedList<>();
if (root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
//层序遍历
while (!queue.isEmpty()) {
List<Integer> list = new LinkedList<>();
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode poll = queue.poll();
list.add(poll.val);
if (poll.left != null) queue.add(poll.left);
if (poll.right != null) queue.add(poll.right);
}
//头插法保存每一层的遍历结果到结果集中
res.add(0, list);
}
return res;
}

时间复杂度:O(n) 层序遍历。


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

更多题解和源码:github