有序数组生成平衡搜索二叉树
题目描述:
给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一棵平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与sortArr一致。
题目难度:
medium
题目思路:
先找到有序数组的中间值,即为二叉树对应的头结点,递归找到该二叉树的左子树和右子树。
代码实现:
public static Node
generateBST(int[] sortArr
) {
if (sortArr
== null
) {
return null
;
}
return generate(sortArr
, 0, sortArr
.length
- 1);
}
public static Node
generate(int[] sortArr
, int l
, int r
) {
if (l
> r
) {
return null
;
}
int mid
= (l
+ r
) / 2;
Node head
= new Node(sortArr
[mid
]);
head
.left
= generate(sortArr
, l
, mid
- 1);
head
.right
= generate(sortArr
, mid
+ 1, r
);
return head
;
}