1.题目
给定一个升序排序的数组,将其转化为平衡二叉搜索树(BST).
平衡二叉搜索树指树上每个节点 node 都满足左子树中所有节点的的值都小于 node 的值,右子树中所有节点的值都大于 node 的值,并且左右子树的节点数量之差不大于1.
2.代码
public class Test {
public static class TreeNode {
public TreeNode(int val) {
this.val = val;
}
int val = 0;
TreeNode left = null;
TreeNode right = null;
}
public static TreeNode sorted (int[] num,int left,int right) {
// write code here
if (left>right){
return null;
}
int mid = (left+right+1)/2;
TreeNode treeNode = new TreeNode(num[mid]);
treeNode.left = sorted(num, left, mid-1); // 构建左子树
treeNode.right = sorted(num, mid+1, right); // 构建右子树
return treeNode;
}
public static TreeNode sortedArrayToBST (int[] num) {
// write code here
return sorted(num,0,num.length-1);
}
public static void main(String[] args) {
}
}