将已排好序的数组转换成高度平衡的二叉搜索树(BST)
2015-03-09 21:24
274 查看
题目要求:给定一个数组,元素已经按照升序排列,将其转换成高度平衡的二叉搜索树(BST)
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public TreeNode sortedArrayToBST(int[] num) {
int len = num.length;
if (num.length == 0) { //异常判断
return null;
}
return recurseOpera(num, 0, len - 1);
}
//因为数组已经排好序
//所以每次只需要取出数组的中间位的数据来生成一个节点,然后递归即可
public TreeNode recurseOpera(int[] num, int low, int high) {
if (low > high) { //递归的出口
return null;
}
int mid = (low + high) / 2;
TreeNode tnode = new TreeNode(num[mid]);
tnode.left = recurseOpera(num, low, mid - 1);
tnode.right = recurseOpera(num, mid + 1, high);
return tnode;
}
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public TreeNode sortedArrayToBST(int[] num) {
int len = num.length;
if (num.length == 0) { //异常判断
return null;
}
return recurseOpera(num, 0, len - 1);
}
//因为数组已经排好序
//所以每次只需要取出数组的中间位的数据来生成一个节点,然后递归即可
public TreeNode recurseOpera(int[] num, int low, int high) {
if (low > high) { //递归的出口
return null;
}
int mid = (low + high) / 2;
TreeNode tnode = new TreeNode(num[mid]);
tnode.left = recurseOpera(num, low, mid - 1);
tnode.right = recurseOpera(num, mid + 1, high);
return tnode;
}
相关文章推荐
- LintCode SortedArrayToBST 把排序数组转换为高度最小的二叉搜索树
- lintcode,把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树(LintCode)
- 把排序数组转换为高度最小的二叉搜索树
- lintCode(177)——把排序数组转换为高度最小的二叉搜索树
- LintCode | 177. 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode: 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树-LintCode
- LintCode-把排序数组转换为高度最小的二叉搜索树
- lintcode把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode——把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- Leetcode Convert Sorted Array to Binary Search Tree 有序数组转换成二叉搜索树BST
- LintCode:把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树