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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree

例:

输入: head = [-10,-3,0,5,9]
输出: [0,-3,9,-10,null,5]
解释: 一个可能的答案是[0,-3,9,-10,null,5],它表示所示的高度平衡的二叉搜索树。

解析:

每次构造根节点时,都选取中间位置的值进行构造即可。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def sortedListToBST(self, head):""":type head: Optional[ListNode]:rtype: Optional[TreeNode]"""sum = []while head:  # 将链表的值存到列表里面sum.append(head.val)head = head.nextdef build(left, right):if left > right:  # 停止条件return Nonemid = (left + right)/2  # 中间值得下标root = TreeNode(sum[mid])  # 构建根节点root.left = build(left, mid - 1)  # 左子树root.right = build(mid + 1, right)  # 右子树return root  # 返回构造好的树return build(0, len(sum) - 1)  # 调用函数

有序链表转换二叉搜索树Python解法相关推荐

  1. 有序链表转换二叉搜索树

    109. 有序链表转换二叉搜索树 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. ...

  2. 109. 有序链表转换二叉搜索树

    链接:109. 有序链表转换二叉搜索树 题解:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/so ...

  3. ( “树” 之 BST) 109. 有序链表转换二叉搜索树 ——【Leetcode每日一题】

    二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点. 二叉查找树中序遍历有序. 109. 有序链表转换二叉搜索树 给定一个单链表的头节点 head ,其中的元素 按升序排序 , ...

  4. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

  5. Java实现 LeetCode 109 有序链表转换二叉搜索树

    109. 有序链表转换二叉搜索树 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. ...

  6. 【算法】有序链表转换二叉搜索树和从中序与后序遍历序列构造二叉树Java解答参考

    三道算法题 1.有序链表转换二叉搜索树 Java代码参考 2.从中序与后序遍历序列构造二叉树 Java代码参考 3.移除元素 Java代码参考 1.有序链表转换二叉搜索树 给定一个单链表,其中的元素按 ...

  7. LeetCode(109):有序链表转换二叉搜索树

    Medium! 题目描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: ...

  8. 有序链表转换二叉搜索树(LeetCode)

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...

  9. LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)

    1. 题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 来源:力扣(LeetC ...

最新文章

  1. 物联网背后的网络安全风险
  2. 洞悉物联网发展1000问之物联网会产生哪些独角兽?机会在哪里?
  3. php追加记录到文件行首的办法
  4. Java最佳实践–多线程环境中的DateFormat
  5. 4,GIL全局解释器锁,event事件,信号量
  6. 首发联发科天玑820!Redmi 10X发布:售价1599元起
  7. 电脑硬件故障排除经验
  8. java 图片怎么设置抗锯齿,图片变形的抗锯齿处理方法
  9. 互联网人吐槽互撕系列漫画 要来啦~
  10. ie不能加载flash html,ie浏览器flash无法加载怎么修复_win7系统ie浏览器flash加载不了如何解决-系统城...
  11. Tahoma 字体在网页中应用的问题
  12. 学习笔记21.07.09:绘制色块图
  13. (二) 数据挖掘之分类
  14. 1、开启ArcGIS 脚本学习之路
  15. R包之tm:文本挖掘包
  16. python使用selenium启动谷歌浏览器无痕模式代码
  17. 市净率PB,市盈率PE
  18. 图像分割之 Geodesic segmentation 和 Graph-Cut
  19. Python3 pyttsx3 文字播放
  20. 跟着团子学SAP PS:增加WBS元素为分摊发送方提升单个项目内部成本精准归集 KSV1/KSU1

热门文章

  1. 读书笔记 —《钱从哪里来》
  2. SAP UI5 应用开发教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor
  3. 如何找到 SAP 电商云 Spartacus UI 导航 navigation 的驱动器 - NavigationEntryItemEffects
  4. 关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题
  5. SAP UI5 初学者教程之五:视图控制器初探 试读版
  6. 如何基于 SAP CDS view 生成 object page
  7. 一个好用的 SAP UI5 本地打包(build)工具,自动生成Component-preload.js
  8. Angular getSimpleChangesStore的实现原理
  9. 微信开发系列之一 - 微信公众号开发的开发环境搭建
  10. 一步步使用SAP云平台的WebIDE开发SAP UI5应用