算法系列——将有序数组转换为二叉搜索树

Posted BridgeGeorge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法系列——将有序数组转换为二叉搜索树相关的知识,希望对你有一定的参考价值。

题目

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

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

链接 https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/

思路

/左右等分建立左右子树,中间节点作为子树根节点,递归该过程。

代码

class Solution 
    // 递归 
    public TreeNode sortedArrayToBST(int[] nums) 
        return dfs(nums,0,nums.length-1);
    

    private TreeNode dfs(int[] nums,int low,int high)
        //叶子结点
        if(low>high)
            return null;
        
         int mid= low+(high-low)/2;
         TreeNode node=new TreeNode(nums[mid]);
         node.left=dfs(nums,low,mid-1);
         node.right=dfs(nums,mid+1,high);
         return node; 
    

以上是关于算法系列——将有序数组转换为二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章

平衡二叉树---将有序数组转换为二叉搜索树

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

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

2021-10-07:将有序数组转换为二叉搜索树。给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树

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

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