根据前序遍历结果生成二叉树
生成平衡二叉树
class Solution {
public TreeNode balanceBST(List<Integer> nodes) {
return inBST(nodes,0,nodes.size()-1);
}
public TreeNode inBST(List<Integer> nodes,int left, int right){
if(left>right) return null;
int mid = left + (right - left)/2;
// 中间的位置选为根结点
TreeNode root = new TreeNode(nodes.get(mid));
// 递归产生左子树
root.left = inBST(nodes,left, mid - 1);
// 进行右子树的递归构建
root.right = inBST(nodes,mid+1,right);
return root;
}
}