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)
  • 相关阅读:
    leetcode python翻转字符串里的单词
    leetcode python快乐数
    Usb gadget驱动
    cnblogs的第一篇
    python返回函数+匿名函数+装饰器+偏函数
    1144. 递减元素使数组呈锯齿状
    208. Implement Trie (Prefix Tree)
    3. Longest Substring Without Repeating Characters
    5. Longest Palindromic Substring :manacher
    929. 独特的电子邮件地址
  • 原文地址:https://www.cnblogs.com/George1994/p/7482893.html
Copyright © 2011-2022 走看看