一、问题描述
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
二、问题分析
Binary Search Tree的定义,BST的中序遍历恰好是sorted in ascending order。但是创建树的时候采用的先序的方式结合二分查找。
三、Java AC代码
public TreeNode sortedArrayToBST(int[] nums) {
TreeNode root = null;
if (nums == null || nums.length == 0) {
return root;
}
int start = 0, end = nums.length - 1;
root = createTree(root, start, end, nums);
return root;
}
public TreeNode createTree(TreeNode node, int start, int end, int[] nums) {
if (start > end) {
return null;
}
int mid = (start + end) / 2;
node = new TreeNode(nums[mid]);
node.left = createTree(node.left, start, mid - 1, nums);
node.right = createTree(node.right, mid + 1, end, nums);
return node;
}