[LeetCode]题解(python):109-Convert Sorted List to Binary Search Tree

题目来源:

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


 

题意分析:

  给定一个排好序的链表,将这个链表转换成一个高度平衡树。


 

题目思路:

  有一个偷懒的方法,将链表转换成一个数组,然后用上一题的解法解决。


 

代码(python):

  
# 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 = None

class Solution(object):
    def sortedListToBST(self, head):
        """
        :type head: ListNode
        :rtype: TreeNode
        """
        def sortedarray(nums):
            size = len(nums)
            if size == 0:
                return None
            if size == 1:
                return TreeNode(nums[0])
            size //= 2
            root = TreeNode(nums[size])
            root.left = sortedarray(nums[:size])
            root.right = sortedarray(nums[size + 1:])
            return root
        nums = []
        while head != None:
            nums.append(head.val)
            head = head.next
        return sortedarray(nums)
View Code

 

posted @ 2016-03-09 15:23  Ry_Chen  阅读(514)  评论(0编辑  收藏  举报