1. 程式人生 > >leetcode: 109. Convert Sorted List to Binary Search Tree

leetcode: 109. Convert Sorted List to Binary Search Tree

Difficulty

Medium.

Problem

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1
. Example: Given the sorted linked list: [-10,-3,0,5,9], One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST: 0 / \ -3 9 / / -10 5

AC

class Solution():
    def sortedListToBST(self, head):
        if not head:
            return None
if not head.next: root, root.left, root.right = TreeNode(head.val), None, None return root preslow = slow = fast = head while fast and fast.next: preslow, slow, fast = slow, slow.next, fast.next.next preslow.next = None root =
TreeNode(slow.val) root.left = self.sortedListToBST(head) root.right = self.sortedListToBST(slow.next) return root