把排序数组转换为高度最小的二叉搜索树
2016-10-26 21:58
183 查看
给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。
样例
给出数组
返回
/**
* 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
* 二叉排序树
* (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
*/
public TreeNode sortedArrayToBST(int[] A) {
// write your code here
if(A==null)
return null;
TreeNode root = null;
return designTree(root,A,0,A.length-1);
}
public TreeNode designTree(TreeNode node,int[] A,int first,int last){
if(first>last){
return null;
}
node = new TreeNode(0);
int mid = (first+last)/2;
node.val=A[mid];
node.left=designTree(node.left,A,first,mid-1);
node.right=designTree(node.right,A,mid+1,last);
return node;
}
}
样例
给出数组
[1,2,3,4,5,6,7],
返回
4 / \ 2 6 / \ / \ 1 3 5 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
* 二叉排序树
* (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
*/
public TreeNode sortedArrayToBST(int[] A) {
// write your code here
if(A==null)
return null;
TreeNode root = null;
return designTree(root,A,0,A.length-1);
}
public TreeNode designTree(TreeNode node,int[] A,int first,int last){
if(first>last){
return null;
}
node = new TreeNode(0);
int mid = (first+last)/2;
node.val=A[mid];
node.left=designTree(node.left,A,first,mid-1);
node.right=designTree(node.right,A,mid+1,last);
return node;
}
}
相关文章推荐
- 题目:把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树convert-sorted-array-to-binary-search-tree-with-minimal-height
- lintcode——把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode-把排序数组转换为高度最小的二叉搜索树-177
- lintcode,把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- LintCode | 177. 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode convert-sorted-array-to-binary-search-tree-with-minimal-height 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode把排序数组转换为高度最小的二叉搜索树
- lintcode 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树(LintCode)
- 把排序数组转换为高度最小的二叉搜索树
- LintCode:把排序数组转换为高度最小的二叉搜索树
- LintCode-把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树