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)
        }
    }
    
  • 相关阅读:
    231. Power of Two
    204. Count Primes
    205. Isomorphic Strings
    203. Remove Linked List Elements
    179. Largest Number
    922. Sort Array By Parity II
    350. Intersection of Two Arrays II
    242. Valid Anagram
    164. Maximum Gap
    147. Insertion Sort List
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13441987.html
Copyright © 2011-2022 走看看