给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例:

给定的有序链表: [-10, -3, 0, 5, 9],

一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:

Python 解答:

# 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:
        lis = []
        while head:
            lis.append(head.val)
            head = head.next

        def build(lis):
            if not lis:
                return None
            else:
                mid = len(lis)//2
                root = TreeNode(lis[mid])
                root.left = build(lis[:mid])
                root.right = build(lis[mid+1:])
                return root
        return build(lis)
最后修改日期: 2021年8月5日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。