`
frank-liu
  • 浏览: 1682180 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: Convert Sorted Array to Binary Search Tree

 
阅读更多

问题描述:

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

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

 

问题分析

  因为这里要求将排序后的数组转换成高度平衡的二叉搜索树,所以这里转换的时候,每次取的元素节点必须要尽量保证它的左右子树的元素个数是一样的。只有这样才能达到一个尽量平衡的结果。于是我们可以每次去数组中给定范围内的中间元素mid,然后从l到mid - 1的元素递归的去构造它的左子树,从mid + 1到r的范围递归的构造它的右子树。

  按照这个思路,可以很快得到如下的代码:

 

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

 

1
0
分享到:
评论

相关推荐

    python-leetcode题解之108-Convert-Sorted-Array-to-Binary-Search-Tree

    python python_leetcode题解之108_Convert_Sorted_Array_to_Binary_Search_Tree

    js-leetcode题解之108-convert-sorted-array-to-binary-search-tree.js

    js js_leetcode题解之108-convert-sorted-array-to-binary-search-tree.js

    lrucacheleetcode-leetcode:leetcode

    lru缓存leetcode leetcode 大批 41. First Missing Positive 广度优先搜索 773. Sliding Puzzle 864. Shortest Path to Get All Keys 深度优先搜索 996. Number of Squareful Arrays 拓扑排序 269. Alien Dictionary...

    leetcode卡-leetcode:利特码解决方案

    leetcode卡 leetcode exercises 3-5 solutions everyday. fighting~ TODO array Best Time to Buy and Sell Stock II Valid Sudoku linked list Palindrome linked list Linked List Cycle trees Convert Sorted ...

    leetcode添加元素使和等于-LeetCode:leetcode

    leetcode添加元素使和等于 LeetCode leetcode 指针类型题目 1. 链表 函数参数传入的链表都没有链表的头,从第一个有数据的节点开始 函数返回一个链表,这个链表也没有头 2. 内存分配 二维数组内存分配 二维数组分配...

    LeetCode最全代码

    26 | [Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/)| [C++](./C++/remove-duplicates-from-sorted-array.cpp) [Python](./Python/remove-duplicates...

    Leetcode book刷题必备

    29. Convert Sorted Array to Balanced Binary Search Tree:将有序数组转换成平衡的二叉搜索树。 30. Convert Sorted List to Balanced Binary Search Tree:将有序链表转换成平衡的二叉搜索树。 31. Binary Tree ...

    Leetcode题目+解析+思路+答案.pdf

    - **Convert Sorted List/Array to Binary Search Tree**:将有序列表或数组转换为二叉搜索树。 - **Path Sum II**:寻找所有从根节点到叶节点的路径,其路径和等于给定的目标值。 - **Flatten Binary Tree to ...

    常见算法题答案及解析

    29. Convert Sorted Array to Binary Search Tree:将有序数组转换为高度平衡的二叉搜索树。 30. Convert Sorted List to Binary Search Tree:将有序链表转换为高度平衡的二叉搜索树。 31. Binary Tree Maximum ...

    CleanCodeHandbook_v1.0.3

    - Convert Sorted Array to Binary Search Tree(将有序数组转换为二叉搜索树) 7. Bit Manipulation(位运算): 位运算是对整数在内存中的二进制形式进行的运算。它是一种低级操作,但能高效地完成某些特定的任务...

    leetcode官方50题算法详解

    2. **将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree)**:利用有序数组的特点,通过递归构建平衡的二叉搜索树。 ### 动态规划 动态规划是解决复杂问题的常用方法,主要通过将问题分解...

    Leetcode答案(c++版)

    **1.9 Convert Sorted List to Binary Search Tree (109)** - **问题描述**:给定一个链表,将其转换为平衡二叉搜索树。 - **解题思路**: - 先找到链表的中间节点作为根节点。 - 使用递归方式处理左子树和右子树...

    算法-leetcode-剑指offer上的题很多

    - **整数转换(Convert Integer A to Integer B)**: 将一个整数转换为另一个整数。 - **阶乘末尾0的个数(Factorial Trailing Zeroes)**: 计算一个整数阶乘结果末尾有多少个零。 - **唯一二叉搜索树(Unique Binary ...

Global site tag (gtag.js) - Google Analytics