Wednesday, August 19, 2015

Leetcode 109. Convert Sorted List to Binary Search Tree

https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/

We can first convert the linked list to array and then use last problem's solution.

Solution:
# T:O(n) S:O(n)
class Solution:
    # @param {ListNode} head
    # @return {TreeNode}
    def sortedArrayToBST(self, nums):
        length = len(nums)
        if length == 0:
            return None
        if length == 1:
            return TreeNode(nums[0])
        root = TreeNode(nums[length/2])
        root.left = self.sortedArrayToBST(nums[:length/2])
        root.right = self.sortedArrayToBST(nums[length/2+1:])
        return root
        
    def sortedListToBST(self, head):
        nums = []
        while head != None:
            nums.append(head.val)
            head = head.next
        return self.sortedArrayToBST(nums)
Run Time: 304 ms

No comments:

Post a Comment