題目:給你一個整數數組?nums
?,其中元素已經按?升序?排列,請你將其轉換為一棵?
平衡二叉搜索樹。
?給定一個有序的整數數組,我們需要構建一棵平衡的二叉搜索樹。平衡二叉樹是指任意一個節點的左右子樹的高度差不超過1。
由于給定的數組是有序的,可以利用這個特性來構建二叉搜索樹。可以選擇數組中間的元素作為根節點,然后遞歸地構建左子樹和右子樹。
?
public class no_108 {public static void main(String[] args) {int[] arr = {-10, -3, 0, 5, 9};TreeNode treeNode = sortedArrayToBST(arr);}public static TreeNode sortedArrayToBST(int[] nums) {return buildTree(nums, 0, nums.length - 1);}public static TreeNode buildTree(int[] nums, int left, int right) {if (left > right) return null;int mid = left + (right - left) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = buildTree(nums, left, mid - 1);root.right = buildTree(nums, mid + 1, right);return root;}
}
利用有序數組的特點,將樹構建出來。