zoukankan      html  css  js  c++  java
  • leetcode刷题笔记一百零八题 将有序数组转换为二叉搜索树

    leetcode刷题笔记一百零八题 将有序数组转换为二叉搜索树

    源地址:108. 将有序数组转换为二叉搜索树

    问题描述:

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

    本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

    示例:

    给定有序数组: [-10,-3,0,5,9],

    一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

     0
    / 
    

    -3 9
    / /
    -10 5

    /**
    将有序数组转换成二叉搜索树的核心思想是不断取区间的中间结点作为树根,使用递归思想继续处理左右子树区间,即可
    */
    /**
     * Definition for a binary tree node.
     * class TreeNode(var _value: Int) {
     *   var value: Int = _value
     *   var left: TreeNode = null
     *   var right: TreeNode = null
     * }
     */
    object Solution {
        def sortedArrayToBST(nums: Array[Int]): TreeNode = {
            def helper(nums: Array[Int], left: Int, right: Int): TreeNode = {
                if (left > right) return null
                val mid = (left + right + 1)/2
                val root = new TreeNode(nums(mid))
                root.left = helper(nums, left, mid-1)
                root.right = helper(nums, mid+1, right)
                return root
            }
            return helper(nums, 0, nums.length-1)
        }
    }
    
  • 相关阅读:
    WebStorm 2017.1.2 汉化破解
    gulp实时刷新页面
    图片转base64
    swiper使用案例一
    js生成GUID
    css实现0.5像素
    mac上搭建appium+IOS自动化测试环境(二)
    6. 使用antd pro构建web页面
    5. 使用Flask蓝图(blueprint)
    4. 为HelloWorld添加日志
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13441987.html
Copyright © 2011-2022 走看看