二叉树的中序遍历就是一个不递减的有序数组,因此按照中序遍历的逆过程来建立二叉树就可以了。
public TreeNode sortedArrayToBST(int[] num) {
int n = num.length;
if(n == 0) return null;
int mid = n / 2;
int[] left = new int[mid];
int[] right = new int[n-1-mid];
for(int i = 0; i < mid; i++) left[i] = num[i];
for(int i = 0; i < n-1-mid; i++) right[i] = num[i+mid+1];
TreeNode root = new TreeNode(num[mid]);
root.left = sortedArrayToBST(left);
root.right = sortedArrayToBST(right);
return root;
}
没有评论:
发表评论