1
class Solution {
2
public TreeNode recoverFromPreorder(String traversal) {
3
if (!traversal.contains("-")) return new TreeNode(Integer.parseInt(traversal));
4
String number = "";
5
int i = 0;
6
while (traversal.charAt(i) != '-') {
7
number += traversal.charAt(i);
8
i++;
9
}
10
// System.out.print("root = " + number + " " + i + " ");
11
TreeNode root = new TreeNode(Integer.parseInt(number));
12
StringBuilder str = new StringBuilder();
13
int bk = 0;
14
for (int j = i; i < traversal.length(); i++) {
15
if (traversal.charAt(i - 1) != '-'
16
&& traversal.charAt(i) == '-'
17
&& traversal.charAt(i + 1) != '-') bk = str.toString().length();
18
else if (!(traversal.charAt(i - 1) != '-' && traversal.charAt(i) == '-'))
19
str.append(traversal.charAt(i));
20
}
21
String divide = str.toString();
22

23
TreeNode left =
24
(bk == 0) ? recoverFromPreorder(divide) : recoverFromPreorder(divide.substring(0, bk));
25
TreeNode right = (bk == 0) ? null : recoverFromPreorder(divide.substring(bk, divide.length()));
26
root.left = left;
27
root.right = right;
28

29
return root;
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0