108. Convert Sorted Array to Binary Search Tree
Posted captain-dl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了108. Convert Sorted Array to Binary Search Tree相关的知识,希望对你有一定的参考价值。
题目来源:
https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/submissions/
自我感觉难度/真实难度:easy/easy
题意:
把一个list转化为平衡树
分析:
自己的代码:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def sortedArrayToBST(self, nums): """ :type nums: List[int] :rtype: TreeNode """ index=len(nums) if index==0: return None if index==1: return TreeNode(nums[0]) cur=TreeNode(nums[index//2]) cur.left =self.sortedArrayToBST(nums[:index//2]) cur.right=self.sortedArrayToBST(nums[index//2+1:]) return cur
代码效率/结果:
Runtime: 104 ms, faster than 88.84% of Python3 online submissions forConvert Sorted Array to Binary Search Tree.
解题思路还是有的,但是总是一些细节出问题:1.返回值,一定要各处都符合需要的类型,这是是TreeNode 2.一个list需要分割成两半的时候,不仅是需要考虑list长度为0时,还有list长度为1的时候 3.看清楚list中index的取值,取值是不会拿掉原来数组中的值得
优秀代码:
class Solution: def sortedArrayToBST(self, nums): """ :type nums: List[int] :rtype: TreeNode """ return self.subSortedArrayToBST(nums,0,len(nums)-1) def subSortedArrayToBST(self,l,i,j): if l == [] : return [] BST = TreeNode(l[(i+j+1)//2]) if i <= (i+j+1)//2-1: BST.left = self.subSortedArrayToBST(l,i,(i+j+1)//2-1) if j >= (i+j+1)//2+1: BST.right = self.subSortedArrayToBST(l,(i+j+1)//2+1,j) return BST
代码效率/结果:
Runtime: 108 ms, faster than 71.50% of Python3 online submissions forConvert Sorted Array to Binary Search Tree.
完美的告诉你,应该如何去改写答案给的函数,使用自己定义的函数
自己优化后的代码:
反思改进策略:
1.提交之前要检查变量名称是否一致
2.对list分割取一般时,index要考虑等于0和1的情况
以上是关于108. Convert Sorted Array to Binary Search Tree的主要内容,如果未能解决你的问题,请参考以下文章
108. Convert Sorted Array to Binary Search Tree
108. Convert Sorted Array to Binary Search Tree
108. Convert Sorted Array to Binary Search Tree
leetcode 108 Convert Sorted Array to Binary Search Tree