package com.leetcode.easy;
import java.util.Arrays;
/**
* 〈04.02. 最小高度树〉
* 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。
* 示例:
* 给定有序数组: [-10,-3,0,5,9],
*
* 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:
*
* 0
* / \
* -3 9
* / /
* -10 5
* @author PitterWang
* @create 2020/5/11
* @since 1.0.0
*/
public class SortedArrayToBST {
public static void main(String[] args) {
System.out.println(5/2);
TreeNode treeNode = sortedArrayToBST(new int[]{-10,-3,0,5,9});
System.out.println(treeNode);
}
/***
* ①Arrays.copyOfRange 方法,将数组拷贝成一个指定长度的数组
* ②由于数组是从小到大排序,然后挂树,只要找到每个根节点,挂在树上即可,所以要靠虑到递归
* @param nums
* @return
*/
public static TreeNode sortedArrayToBST(int[] nums) {
if(nums.length == 0){
return null;
}
TreeNode node = new TreeNode(nums[nums.length/2]);
node.left = sortedArrayToBST(Arrays.copyOfRange(nums,0,nums.length/2));
node.right = sortedArrayToBST(Arrays.copyOfRange(nums,nums.length/2 + 1,nums.length));;
return node;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
@Override
public String toString() {
return "TreeNode{" +
"val=" + val +
", left=" + left +
", right=" + right +
'}';
}
}
04.02. 最小高度树
最新推荐文章于 2023-10-16 15:47:11 发布