2
public TreeNode recoverFromPreorder(String traversal) {3
if (!traversal.contains("-")) return new TreeNode(Integer.parseInt(traversal));6
while (traversal.charAt(i) != '-') {7
number += traversal.charAt(i);10
// System.out.print("root = " + number + " " + i + " ");11
TreeNode root = new TreeNode(Integer.parseInt(number));12
StringBuilder str = new StringBuilder();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));21
String divide = str.toString();24
(bk == 0) ? recoverFromPreorder(divide) : recoverFromPreorder(divide.substring(0, bk));25
TreeNode right = (bk == 0) ? null : recoverFromPreorder(divide.substring(bk, divide.length()));