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

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

    题意

    将有序数组转化为链表;

    解题思路

    1. 将数组切片,中间值作为根结点,两边则则作为左子树和右子树;

    2. 维护左右两个值,实现对数组切片的功能;

    实现

    class Solution(object):
       def sortedArrayToBST(self, nums):
           """
          :type nums: List[int]
          :rtype: TreeNode
          """
           if not nums:
               return None
           elif len(nums) == 1:
               return TreeNode(nums[0])
           
           mid = len(nums) // 2
           cur = TreeNode(nums[mid])
           cur.left = self.sortedArrayToBST(nums[:mid])
           cur.right = self.sortedArrayToBST(nums[mid+1:])
           return cur
         
    def sortedArrayToBST(self, nums):
           """
          :type nums: List[int]
          :rtype: TreeNode
          """
           def dfs(start, end):
               if start == end:
                   return None
               mid = start + (end - start) // 2
               cur = TreeNode(nums[mid])
               cur.left = dfs(start, mid)
               cur.right = dfs(mid+1, end)
               return cur
           
           if not nums:
               return None
           
           return dfs(0, len(nums))
         
    def sortedArrayToBST(self, nums):
           """
          :type nums: List[int]
          :rtype: TreeNode
          """
           def helper(left, right):
               if left > right:
                   return None
               if left == right:
                   return TreeNode(nums[left])

               mid = (left + right) // 2
               node = TreeNode(nums[mid])
               node.left = helper(left, mid-1)
               node.right = helper(mid+1, right)
               return node
           
           if not nums:
               return None
           
           return helper(0, len(nums)-1)
  • 相关阅读:
    C# 对MongoDB 进行增删改查的简单操作 (转)
    MongoDB 查询 (转) 仅限于C++开发
    STL 中 string 的使用
    360应用上传所需的准备
    HTML5应用 转 Android、Windows Phone 应用
    Cocos2d-x项目编译为Android应用——命令行方式
    Coding 初级教程(二)——上传已有项目
    【5】Android Service 与 AIDL
    使用类的成员函数来实现回调函数
    JavaScript 学习笔记
  • 原文地址:https://www.cnblogs.com/George1994/p/7482893.html
Copyright © 2011-2022 走看看