LeetCode 109 有序鍊錶轉換二叉搜尋樹

2022-03-26 04:45:54 字數 1398 閱讀 5518

difficulty:中等

給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。

本題中,乙個高度平衡二叉樹是指乙個二叉樹_每個節點 _的左右兩個子樹的高度差的絕對值不超過 1。

示例:

給定的有序鍊錶: [-10, -3, 0, 5, 9],

乙個可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面這個高度平衡二叉搜尋樹:

0/ \

-3 9

/ /

-10 5

solution

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 ...