leetcode1008
public TreeNode bstFromPreorder(int[] preorder) {
TreeNode root=new TreeNode(preorder[0]);
construct(root,1,preorder.length-1,preorder);
return root;
}
void construct(TreeNode root,int start,int end,int[] preorder) {
if(end<start)
return ;
int index1=start;
while(index1<=end&&preorder[index1]<root.val)
index1++;
if(index1!=start) {
TreeNode L=new TreeNode(preorder[start]);
root.left=L;
construct(L,start+1,index1-1,preorder);
}
if(index1!=end+1) {
TreeNode R=new TreeNode(preorder[index1]);
root.right=R;
construct(R,index1+1,end,preorder);
}
}
2ms,runtime beats 100%,memory beats 100%