当前位置: 代码迷 >> 综合 >> 领扣LintCode算法问题答案-1359. 有序数组转换为二叉搜索树
  详细解决方案

领扣LintCode算法问题答案-1359. 有序数组转换为二叉搜索树

热度:35   发布时间:2024-02-25 15:05:24.0

领扣LintCode算法问题答案-1359. 有序数组转换为二叉搜索树

目录

  • 1359. 有序数组转换为二叉搜索树
    • 描述
    • 样例 1:
    • 样例 2:
  • 题解
  • 鸣谢

1359. 有序数组转换为二叉搜索树

描述

给定一个数组,其中元素按升序排序,将其转换为高度平衡的BST。

对于这个问题,高度平衡的二叉树被定义为二叉树,其中每个节点的两个子树的深度从不相差超过1。

样例 1:

输入: [-10,-3,0,5,9],
输出: [0,-3,9,-10,#,5],
解释:
针对该数组的其中一个解为 [0,-3,9,-10,null,5], 其对应的平衡BST树如下:0/ \-3   9/   /-10  5

样例 2:

输入: [1,3]
输出: [3,1]
解释:
针对该数组的其中一个解为 [3,1], 其对应的平衡BST树如下:3/ 
1   

题解

/*** Definition of TreeNode:* public class TreeNode {* public int val;* public TreeNode left, right;* public TreeNode(int val) {* this.val = val;* this.left = this.right = null;* }* }*/public class Solution {
    /*** @param nums: the sorted array* @return: the root of the tree*/public TreeNode convertSortedArraytoBinarySearchTree(int[] nums) {
    // Write your code here.if (nums == null|| nums.length == 0) {
    return null;}int mid = (nums.length - 1) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = convertSortedArraytoBinarySearchTree(nums, 0, mid - 1);root.right = convertSortedArraytoBinarySearchTree(nums, mid + 1, nums.length - 1);return root;}private TreeNode convertSortedArraytoBinarySearchTree(int[] nums, int startIndex, int endIndex) {
    if (startIndex > endIndex|| startIndex < 0|| endIndex >= nums.length) {
    return null;}int mid = (startIndex + endIndex) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = convertSortedArraytoBinarySearchTree(nums, startIndex, mid - 1);root.right = convertSortedArraytoBinarySearchTree(nums, mid + 1, endIndex);return root;}
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。