方法:递归
此题难点,1:获得链表的中位数,2:建立一个树 (建立第一个函数是获取中位值,第二个函数是建立树)
关键语法 root = TreeNode(mid.val)
class Solution:
def sortedListToBST(self, head: ListNode) -> TreeNode:
# 难点,获得中位数 and 建立一个树
def midLocation(left, right):
fast = slow = left
while fast.next != right and fast.next.next != right:
fast = fast.next.next
slow = slow.next
return slow
def makeTree(left, right):
if left == right:
return None
mid = midLocation(left, right)
root = TreeNode(mid.val)
root.left = makeTree(left, mid)
root.right = makeTree(mid.next, right)
return root # 重点,不能忘
return midLocation(head, None)