递归:
首先确定出根节点
然后确定出左右节点的字符串,把这两个字符串交给递归处理
public class test {
public TreeNode str2tree(String s){
if(s==null || s.length()==0){
return null;
}
if(s.charAt(0)=='(' && s.charAt(s.length()-1)==')'){
s = s.substring(1,s.length()-1);
}
int leftParenthesis = 0;
int index = 0;
TreeNode root = null;
while(index < s.length()){
if(s.charAt(index) == '('){
root = new TreeNode(Integer.parseInt(s.substring(0,index)));
break;
}
index++;
}
if(index == s.length()){
root = new TreeNode(Integer.parseInt(s.substring(0,index)));
return root;
}
int leftbound = index;
while(index < s.length()){
if(s.charAt(index) == '('){
leftParenthesis++;
}else if(s.charAt(index) == ')'){
leftParenthesis--;
}
if(leftParenthesis == 0){
break;
}
index++;
}
TreeNode leftNode = str2tree(s.substring(leftbound+1, index));
TreeNode rightNode = str2tree(s.substring(index+1, s.length()));
root.left = leftNode;
root.right = rightNode;
return root;
}
}