Skip to content

Commit 7175bd2

Browse files
字节初面
1 parent 017d6b2 commit 7175bd2

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
标题 二叉树的蛇形遍历
2+
<p>
3+
题目描述
4+
<p>
5+
实现一个方法,输入二叉树的根节点,实现二叉树的蛇形遍历打印。​
6+
<p>
7+
<p>
8+
<p>
9+
10+
```java
11+
public class TreeNode {
12+
int val;
13+
TreeNode left;
14+
TreeNode right;
15+
16+
TreeNode(int x) {
17+
val = x;
18+
}
19+
}
20+
```
21+
22+
<p>
23+
<p>
24+
例子:​
25+
输出 10 5 15 20 12 6 1
26+
```
27+
10
28+
5 15
29+
1 6 12 20
30+
```
31+
解法:
32+
33+
```java
34+
import java.util.*;
35+
36+
public class Main1 {
37+
public static void main(String[] args) {
38+
TreeNode treeNode = new TreeNode(10, new TreeNode(5, new TreeNode(1, null, null), new TreeNode(6, null, null)),
39+
new TreeNode(15, new TreeNode(12, null, null), new TreeNode(20, null, null)));
40+
solve(treeNode);
41+
}
42+
43+
private static void solve(TreeNode treeNode) {
44+
boolean flag = false;
45+
Queue<TreeNode> queue = new LinkedList<>();
46+
queue.add(treeNode);
47+
while (!queue.isEmpty()) {
48+
int size = queue.size();
49+
Deque<Integer> list = new LinkedList<>();
50+
for (int i = 0; i < size; i++) {
51+
TreeNode tree = queue.poll();
52+
assert tree != null;
53+
int val = tree.val;
54+
if (flag) {
55+
list.addFirst(val);
56+
} else {
57+
list.add(val);
58+
}
59+
TreeNode left = tree.left;
60+
TreeNode right = tree.right;
61+
if (left != null) {
62+
queue.add(left);
63+
}
64+
if (right != null) {
65+
queue.add(right);
66+
}
67+
}
68+
flag = !flag;
69+
System.out.println(list);
70+
}
71+
}
72+
}
73+
74+
class TreeNode {
75+
int val;
76+
TreeNode left;
77+
TreeNode right;
78+
79+
TreeNode(int x) {
80+
val = x;
81+
}
82+
83+
public TreeNode(int val, TreeNode left, TreeNode right) {
84+
this.val = val;
85+
this.left = left;
86+
this.right = right;
87+
}
88+
}
89+
```

0 commit comments

Comments
 (0)