File tree Expand file tree Collapse file tree 2 files changed +79
-0
lines changed Expand file tree Collapse file tree 2 files changed +79
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode(int x) { val = x; }
8
+ * }
9
+ * /
10
+ class Solution {
11
+ public List<List<Integer >> levelOrder(TreeNode root) {
12
+ List<List<Integer >> list = new ArrayList<List<Integer >>();
13
+ //List<TreeNode > templist=new ArrayList<TreeNode >();//这个list 没有实现对应接口
14
+ LinkedList<TreeNode > llist = new LinkedList<TreeNode >();//但是这个 linkedlist 实现了 deque 接口
15
+ //LinkedList<TreeNode > templist = new LinkedList<TreeNode >();//临时队列-用于存放同一排
16
+ if (root == null)return list;
17
+ llist.add(root);
18
+ TreeNode current;
19
+ while (!llist.isEmpty() ) {
20
+ List<Integer > templist = new ArrayList<Integer >();
21
+ int templen = llist.size();
22
+ for (int i=0;i<templen;i++){
23
+ current = llist.poll();
24
+ templist.add(current.val);
25
+ if (current.left != null)
26
+ llist.add(current.left);
27
+ if (current.right != null)
28
+ llist.add(current.right);
29
+ }
30
+ list.add(templist);
31
+ }
32
+
33
+ return list;
34
+ }
35
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode(int x) { val = x; }
8
+ * }
9
+ * /
10
+ class Solution {
11
+ public List<List<Integer >> zigzagLevelOrder(TreeNode root) {
12
+ List<List<Integer >> result = new ArrayList<>();
13
+ if (root == null) return result;
14
+ LinkedList<TreeNode > queue = new LinkedList<>();
15
+ queue.add(root);
16
+ TreeNode current;
17
+ List<Integer > tempilist;
18
+ int ilistlen;
19
+ boolean isleftbegin = true;
20
+ while (!queue.isEmpty()) {
21
+ List<Integer > intlist = new ArrayList<>();
22
+ int qlen = queue.size();
23
+ for (int i = 0; i < qlen; i++) {
24
+ current = queue.poll();
25
+ intlist.add(current.val);
26
+ if (current.left != null)
27
+ queue.add(current.left);
28
+ if (current.right != null)
29
+ queue.add(current.right);
30
+ }
31
+ if (!isleftbegin) {
32
+ tempilist = new ArrayList<>();
33
+ ilistlen = intlist.size();
34
+ for (int i=0;i<ilistlen;i++){
35
+ tempilist.add(intlist.get(ilistlen-1-i));
36
+ }
37
+ intlist = tempilist;
38
+ }
39
+ result.add(intlist);
40
+ isleftbegin = !isleftbegin;
41
+ }
42
+ return result;
43
+ }
44
+ }
You can’t perform that action at this time.
0 commit comments