1008 。 先序遍历构造二叉树
class Solution {
public TreeNode bstFromPreorder(int[] preorder) {
if(preorder.length == 0){
return null;
}
Stack stack = new Stack<>();
TreeNode ret = new TreeNode(preorder[0]);
stack.push(ret);
for(int i = 1;i<preorder.length;i++){
TreeNode root = stack.peek();
if(preorder[i]<root.val){
root.left = new TreeNode(preorder[i]);
stack.push(root.left);
} else {
TreeNode cur = stack.pop();
while(!stack.isEmpty() && stack.peek().val<preorder[i]){
cur = stack.pop();
cur.right=new TreeNode(preorder[i]);
stack.push(cur.right);
}
}
}
return ret;
}
}