给定先序遍历求二叉树

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;   
}

}

猜你喜欢

转载自blog.csdn.net/zhangpupu320/article/details/89058531