您的位置:首页 > 其它

leetcode -- Convert Sorted Array to Binary Search Tree

2013-08-19 11:21 621 查看
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

[解题思路]

递归确定每棵树的根节点的值,这里根节点的值是二分搜索的中值

由于这里是有序数组,确定root的时间复杂度为O(1), 整个算法的时间复杂度为O(n),n为节点数目。

/**
* Definition for binary tree
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode sortedArrayToBST(int[] num) {
// Start typing your Java solution below
// DO NOT write main() function
return generate(num, 0, num.length - 1);
}

public TreeNode generate(int[] num, int start, int end){
if(start > end){
return null;
}
int mid = (end + start) / 2;
TreeNode root = new TreeNode(num[mid]);
root.left = generate(num, start, mid - 1);
root.right = generate(num, mid + 1, end);
return root;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: