leetcode之Convert Sorted List to Binary Search Tree

来源:互联网 发布:精准的日语翻译软件 编辑:程序博客网 时间:2024/06/05 15:41
这道题的思路借鉴了将esorted array转换的思路。讲linked list转换为array。再来做。代码如下:
# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = None# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def sortedListToBST(self, head):        """        :type head: ListNode        :rtype: TreeNode        """        listofall = []        while head:            listofall.append(head.val)            head = head.next        def sortedArrayToBST(nums):            length = len(nums)            if length == 0:                return None            if length == 1:                return TreeNode(nums[0])            if length == 2:                root = TreeNode(nums[0])                root.right = TreeNode(nums[1])            if length == 3:                root = TreeNode(nums[1])                root.left = TreeNode(nums[0])                root.right = TreeNode(nums[2])                return root            root = TreeNode(nums[length / 2])            root.left = sortedArrayToBST(nums[:length / 2])            root.right = sortedArrayToBST(nums[length / 2 + 1:])            return root        return sortedArrayToBST(listofall)

0 0