Skip to content

Commit 6c71c2a

Browse files
committed
opt: opt 107
1 parent 9ef3bae commit 6c71c2a

File tree

1 file changed

+39
-2
lines changed

1 file changed

+39
-2
lines changed

note/107/README.md

+39-2
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,46 @@ return its bottom-up level order traversal as:
2828
**Tags:** Tree, Breadth-first Search
2929

3030

31-
## 思路
31+
## 思路0
3232

33-
题意是从下往上按层遍历二叉树,每一层是从左到右,由于是从下往上,那么我们就先遍历,当链表尺寸小于深度的时候,我们在链表首部插入新的节点,然后在最后遍历完插入节点即可,好好模拟想一想,画一画,应该能想通。
33+
题意是从下往上按层遍历二叉树,每一层是从左到右,按层遍历,很明显,宽搜第一时间符合,因为是从下往上,所以插入的时候每次插到链表头即可。
34+
35+
36+
``` java
37+
/**
38+
* Definition for a binary tree node.
39+
* public class TreeNode {
40+
* int val;
41+
* TreeNode left;
42+
* TreeNode right;
43+
* TreeNode(int x) { val = x; }
44+
* }
45+
*/
46+
class Solution {
47+
public List<List<Integer>> levelOrderBottom(TreeNode root) {
48+
if (root == null) return Collections.emptyList();
49+
List<List<Integer>> list = new LinkedList<>();
50+
LinkedList<TreeNode> q = new LinkedList<>();
51+
q.add(root);
52+
while(!q.isEmpty()) {
53+
int size = q.size();
54+
List<Integer> sub = new LinkedList();
55+
for(int i = 0; i < size; ++i) {
56+
TreeNode node = q.remove();
57+
sub.add(node.val);
58+
if (node.left != null) q.add(node.left);
59+
if (node.right != null) q.add(node.right);
60+
}
61+
list.add(0, sub);
62+
}
63+
return list;
64+
}
65+
}
66+
```
67+
68+
## 思路1
69+
70+
另一种思路就是深搜,深搜的时候同时记录深度,然后在相应的层插入节点值即可。
3471

3572
``` java
3673
/**

0 commit comments

Comments
 (0)