difficulty:中等
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。
本題中,乙個高度平衡二叉樹是指乙個二叉樹_每個節點 _的左右兩個子樹的高度差的絕對值不超過 1。
示例:
solution給定的有序鍊錶: [-10, -3, 0, 5, 9],
乙個可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面這個高度平衡二叉搜尋樹:
0/ \
-3 9
/ /
-10 5
language:全部題目
跟有序陣列轉換二叉搜尋樹一樣,首先把有序鍊錶轉換成為陣列就行了,第一次提交的時候錯誤,因為當鍊表為none的時候返回了空列表,跟預期的返回資料格式不一致。
# definition for singly-linked list.
# class listnode:
# def __init__(self, val=0, next=none):
# self.val = val
# self.next = next
# definition for a binary tree node.
# class treenode:
# def __init__(self, val=0, left=none, right=none):
# self.val = val
# self.left = left
# self.right = right
class solution:
def sortedlisttobst(self, head: listnode) -> treenode:
if not head: return none
nums =
while head:
head = head.next
def buildhelper(start, end):
if start > end: return none
mid = (end + start) // 2
root = treenode(nums[mid])
root.left = buildhelper(start, mid-1)
root.right = buildhelper(mid+1, end)
return root
n = len(nums)
return buildhelper(0, n-1)
LeetCode109 有序鍊錶轉換二叉搜尋樹
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...
LeetCode 109 有序鍊錶轉換二叉搜尋樹
題目描述 給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜...
leetcode109 有序鍊錶轉換二叉搜尋樹
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...