0
点赞
收藏
分享

微信扫一扫

LeetCode 108. 将有序数组转换为二叉搜索树

巧乐兹_d41f 2022-04-14 阅读 41

LeetCode 108. 将有序数组转换为二叉搜索树

文章目录

题目描述

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
示例 1:
输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

LeetCode 108. 将有序数组转换为二叉搜索树
提示:


    1 <= nums.length <= 104
    -104 <= nums[i] <= 104
    nums 按 严格递增 顺序排列

一、解题关键词

数组有序

二、解题报告

1.思路分析

2.时间复杂度

3.代码示例

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return helper(nums,0,nums.length - 1);
    }
    TreeNode helper(int [] nums,int left,int right){
        if(left > right){return null;}
        
        //int mid = left + (right - left) / 2;
        int mid = (left + right  + 1) / 2;

        TreeNode root = new TreeNode(nums[mid]);
        root.left = helper(nums,left,mid - 1);
        root.right = helper(nums,mid + 1,right);

        return root;
    }
}

2.知识点

生成二叉树
结合二叉树的特点

总结

举报

相关推荐

0 条评论