package LeetCode.OneThousandMore;
import LeetCode.TreeNode;
public class OneThousandAndEight {
private int idx = 0;
int len;
public TreeNode bstFromPreorder(int[] preorder) {
len = preorder.length;
if (len == 0) return null;
return buildBST(preorder,Integer.MIN_VALUE, Integer.MAX_VALUE);
}
private TreeNode buildBST(int[] preorder, int lower, int upper){
// 若idx = len说明已经构建完成了
if (idx == len) return null;
// 用这个值来进行数组的区分,进行二分查找
int val = preorder[idx];
// 不符合条件
if (val < lower || val > upper) return null;
idx++;
// 进行递归
TreeNode root = new TreeNode(val);
root.left = buildBST(preorder, lower, val);
root.right = buildBST(preorder, val, upper);
return root;
}
}
1008. 先序遍历构造二叉树(逐句解释代码)
最新推荐文章于 2021-11-09 20:48:25 发布