Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
題意砸琅,給我一個(gè)升序的數(shù)組兆沙,讓我構(gòu)建一棵平衡的二叉樹。
解析:利用遞歸的方式飞傀,每次選取一個(gè)中間位置的數(shù),放在這棵二叉樹上诬烹。
java代碼:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums == null || nums.length == 0) return null;
return buildTree(nums, 0, nums.length - 1);
}
private TreeNode buildTree(int[] nums, int lo, int hi) {
if (lo > hi) {
return null;
}
int mid = lo + (hi - lo) / 2;
int data = nums[mid];
TreeNode treeNode = new TreeNode(data);
treeNode.left = buildTree(nums, lo, mid - 1);
treeNode.right = buildTree(nums, mid + 1, hi);
return treeNode;
}
}