zoukankan      html  css  js  c++  java
  • LeetCode 108. 将有序数组转换为二叉搜索树

    题目链接

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

    思路分析

    这个题要求我们将一个升序的数组转变成二叉搜索树,那么其实思路很容易了,就是使用二分的方法,把数组中的中间位置的数据作为当前树的根节点,它的左边的数成为它的左子树,右边的数成为它的右子树。

    代码实现

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

    注意我这里写的helper,区间是左闭右开的,模仿的是Arrays.copyOfRange()方法的要求,因为这次在做的时候我使用Arrays.copyOfRange()这个方法居然提示爆内存了,奇怪。

    总结

    本月的每日一题基本上都是二分/DP这种,对我的个人帮助还是非常重要的~

  • 相关阅读:
    一次函数(好难的一次函数)
    脱水缩合(大搜索)
    背单词
    仙人掌(cactus)
    LYK 快跑!(LYK别打我-)(话说LYK是谁)
    巧克力棒
    选数字(贪心+枚举)
    看程序写结果(program)
    np问题
    IUYYLIUIU
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13228648.html
Copyright © 2011-2022 走看看