Skip to content

Commit de5f3cb

Browse files
author
tanfanhua
committed
tree travel
1 parent 0d17728 commit de5f3cb

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.blankj.medium._0102;
2+
3+
import com.blankj.structure.TreeNode;
4+
5+
import java.util.*;
6+
7+
public class Solution {
8+
9+
public static void main(String[] args) {
10+
Solution s = new Solution();
11+
System.out.println(s.levelOrderTraversal(TreeNode.createTestData("[1,9,20,null,null,15,7]")));
12+
}
13+
14+
public List<List<Integer>> levelOrderTraversal(TreeNode head) {
15+
if (head == null) {
16+
return Collections.emptyList();
17+
}
18+
TreeMap<Integer, List<Integer>> levelValuesMap = new TreeMap<>();
19+
levelValuesMap.put(0, List.of(head.val));
20+
travelOneTree(head.left, 1, levelValuesMap);
21+
travelOneTree(head.right, 1, levelValuesMap);
22+
List<List<Integer>> res = new ArrayList<>();
23+
for (List<Integer> value : levelValuesMap.values()) {
24+
res.add(value);
25+
}
26+
return res;
27+
}
28+
29+
private void travelOneTree(TreeNode node, int level, Map<Integer, List<Integer>> levelValuesMap) {
30+
if (node == null) {
31+
return;
32+
}
33+
List<Integer> values = levelValuesMap.get(level);
34+
if (values == null) {
35+
values = new ArrayList<>();
36+
levelValuesMap.put(level, values);
37+
}
38+
values.add(node.val);
39+
travelOneTree(node.left, level + 1, levelValuesMap);
40+
travelOneTree(node.right, level + 1, levelValuesMap);
41+
}
42+
43+
44+
}

0 commit comments

Comments
 (0)