把排序数组转换为高度最小的二叉搜索树
题目
给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。
样例
给出数组 [1,2,3,4,5,6,7], 返回
挑战
可能有多个答案,返回任意一个即可
题解
二分+递归
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param A: an integer array
* @return: a tree node
*/
public TreeNode sortedArrayToBST(int[] A) {
return convert(null,A,0,A.length-1);
}
public TreeNode convert(TreeNode node,int[] A,int start,int end)
{
if (start > end)
{
return null;
}
int mid = (end + start) / 2;
node = new TreeNode(A[mid]);
node.left = convert(node.left, A, start, mid - 1);
node.right = convert(node.right, A, mid + 1, end);
return node;
}
}
Last Update 2016.9.9