defsortedListToBSTR(self, start, end): if start > end: returnNone root = (end - start) / 2 + start left = self.sortedListToBSTR(start, root - 1) # now `self.cur` is root node = TreeNode(self.cur.val) self.cur = self.cur.next right = self.sortedListToBSTR(root + 1, end) node.left = left node.right = right return node
defsortedListToBST(self, head): """ :type head: ListNode :rtype: TreeNode """ self.cur = head n = 0 while head: n += 1 head = head.next return self.sortedListToBSTR(0, n - 1)