题意理解
这题其实可以直接建树做,但是我偷懒了一下,直接在map里面存储了序号与树的对应关系。
代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static class FastScanner {
private BufferedReader br;
private StringTokenizer st;
public FastScanner() {
br = new BufferedReader(new InputStreamReader(System.in));
}
public String nextToken() {
while(null == st || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (Exception e) {
}
}
return st.nextToken();
}
public int nextInt() {
return Integer.valueOf(nextToken());
}
}
static Map<Character, Node> map = new HashMap<>();
public static class Node {
char value;
char left;
char right;
public Node(String str) {
value = str.charAt(0);
left = str.charAt(1);
right = str.charAt(2);
}
public void print() {
System.out.print(value);
if(left != '*') {
Node lc = map.get(left);
lc.print();
}
if(right != '*') {
Node rc = map.get(right);
rc.print();
}
}
}
static int N;
static Node[] node;
public static void main(String[] args) {
FastScanner fs = new FastScanner();
N = fs.nextInt();
node = new Node[N];
for(int i = 0; i < N; i++) {
String string = fs.nextToken();
node[i] = new Node(string);
map.put(string.charAt(0), node[i]);
}
node[0].print();
}
}