Skip to content

Commit d0e3eb0

Browse files
author
houfachao
committed
103. 二叉树的锯齿形层序遍历
1 parent 921d400 commit d0e3eb0

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.geekidentity.leetcode.n0103;
2+
3+
import java.util.*;
4+
5+
public class ZigzagLevelOrder {
6+
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
7+
List<List<Integer>> result = new ArrayList<>();
8+
if (root == null) return result;
9+
Queue<TreeNode> nodeQueue = new ArrayDeque<TreeNode>();
10+
nodeQueue.offer(root);
11+
boolean left = true;
12+
while (!nodeQueue.isEmpty()) {
13+
int size = nodeQueue.size();
14+
Deque<Integer> levelQueue = new LinkedList<>();
15+
for (int i = 0; i < size; i++) {
16+
TreeNode node = nodeQueue.poll();
17+
if (left) {
18+
levelQueue.addLast(node.val);
19+
} else {
20+
levelQueue.addFirst(node.val);
21+
}
22+
if (node.left != null) nodeQueue.offer(node.left);
23+
if (node.right != null) nodeQueue.offer(node.right);
24+
}
25+
left = !left;
26+
result.add(new LinkedList<>(levelQueue));
27+
}
28+
return result;
29+
}
30+
31+
static class TreeNode {
32+
int val;
33+
TreeNode left;
34+
TreeNode right;
35+
TreeNode() {}
36+
TreeNode(int val) { this.val = val; }
37+
TreeNode(int val, TreeNode left, TreeNode right) {
38+
this.val = val;
39+
this.left = left;
40+
this.right = right;
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)