109.有序链表转换二叉搜索树
【LetMeFly】109.有序链表转换二叉搜索树 - 链表中值为根,中值左右分别为左右子树
力扣题目链接:https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/
给定一个单链表的头节点 head
,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。
示例 1:
输入: head = [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0,-3,9,-10,null,5],它表示所示的高度平衡的二叉搜索树。
示例 2:
输入: head = [] 输出: []
提示:
head
中的节点数在[0, 2 * 104]
范围内-105 <= Node.val <= 105
方法一:链表中值为根,中值左右分别为左右子树
这题与LeetCode 0108.将有序数组转换为二叉搜索树类似。
区别是本题
将0108
的有序数组
变成了有序链表
。
因此我们仍然采用LeetCode 0108的思路,并用哈希表记录一下链表的第几个元素的值是多少
即可。
具体方法请参考https://letmefly.blog.csdn.net/article/details/125610878
- 时间复杂度$O(n)$,其中$n$是数组中元素的个数。
- 空间复杂度$O(\log n)$,取决于递归栈的深度。
AC代码
C++
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/125691471
109.有序链表转换二叉搜索树
https://blog.letmefly.xyz/2022/07/09/LeetCode 0109.有序链表转换二叉搜索树/