File tree 1 file changed +39
-2
lines changed
1 file changed +39
-2
lines changed Original file line number Diff line number Diff line change @@ -28,9 +28,46 @@ return its bottom-up level order traversal as:
28
28
** Tags:** Tree, Breadth-first Search
29
29
30
30
31
- ## 思路
31
+ ## 思路0
32
32
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
+ 另一种思路就是深搜,深搜的时候同时记录深度,然后在相应的层插入节点值即可。
34
71
35
72
``` java
36
73
/**
You can’t perform that action at this time.
0 commit comments