문제

전체코드
public class BOJ9934 {
private static int[] node;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int K = Integer.parseInt(br.readLine());
int size = (int)Math.pow(2, K) - 1;
node = new int[size];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < node.length; i++) {
node[i] = Integer.parseInt(st.nextToken());
}
Map<Integer, List<Integer>> map = new HashMap<>();
findRoot(0, size - 1, 0, map);
for (Integer i : map.keySet()) {
List<Integer> list = map.get(i);
for (Integer is : list) {
System.out.print(is + " ");
}
System.out.println();
}
}
private static void findRoot(int start, int end, int level, Map<Integer, List<Integer>> map) {
int mid = (start + end) / 2;
List<Integer> newList = map.getOrDefault(level, new ArrayList<Integer>());
newList.add(node[mid]);
map.put(level, newList);
if(start == end) return;
findRoot(start, mid - 1, level + 1, map);
findRoot(mid + 1, end, level + 1, map);
}
}