Untitled

 avatar
unknown
plain_text
a year ago
843 B
5
Indexable
def sortedListToBST(self, head: Optional[ListNode]):
    def getMiddle(head):
        preHead = ListNode(-1000000000, head)
            
        fast = preHead
        slow = preHead
        pre = slow
            
        while fast is not None:
            fast = fast.next
            if fast is not None:
                fast = fast.next
            pre = slow
            slow = slow.next
        return pre
    def BT(node):
        if node is None:
            return None
            
        middle_pointer = getMiddle(node)
        middle = middle_pointer.next
        if middle is None:
            return TreeNode(node.val)
        middle_pointer.next = None
        curr = TreeNode(middle.val)
        if node != middle:
            curr.left = BT(node)
        curr.right = BT(middle.next)
        return curr
    return BT(head)
Editor is loading...
Leave a Comment