当前位置: 首页 > wzjs >正文

龙岗区网站建设软件开发与项目管理就业前景

龙岗区网站建设,软件开发与项目管理就业前景,做网络销售怎么建立网站,济南模板网站制作LC109. 有序链表转换平衡二叉搜索树 题目要求(一)快慢指针1. 理解问题2. 解决思路3. 具体步骤4. 代码实现5. 复杂度分析6. 示例解释7. 总结 LC109. 有序链表转换平衡二叉搜索树 题目要求 (一)快慢指针 要将一个按升序排列的单链表转换为平衡的二叉搜索树(BST&…

LC109. 有序链表转换平衡二叉搜索树

    • 题目要求
    • (一)快慢指针
      • 1. 理解问题
      • 2. 解决思路
      • 3. 具体步骤
      • 4. 代码实现
      • 5. 复杂度分析
      • 6. 示例解释
      • 7. 总结

LC109. 有序链表转换平衡二叉搜索树

题目要求

在这里插入图片描述

(一)快慢指针

要将一个按升序排列的单链表转换为平衡的二叉搜索树(BST),可以采用以下步骤:

1. 理解问题

  • 单链表:链表中的节点按升序排列。
  • 平衡二叉搜索树:树的左右子树高度差不超过1,且左子树的值小于根节点,右子树的值大于根节点。

2. 解决思路

由于链表是升序排列的,我们可以将其视为二叉搜索树的中序遍历结果。为了构建平衡的BST,我们需要找到链表的中间节点作为根节点,然后递归地构建左子树和右子树。

3. 具体步骤

  1. 找到链表的中间节点

    • 使用快慢指针法找到链表的中间节点。快指针每次走两步,慢指针每次走一步,当快指针到达链表末尾时,慢指针指向的就是中间节点。
  2. 递归构建BST

    • 将中间节点作为根节点。
    • 递归地构建左子树(链表的前半部分)和右子树(链表的后半部分)。
  3. 处理边界条件

    • 如果链表为空,返回 null
    • 如果链表只有一个节点,直接返回该节点作为树的根节点。

4. 代码实现

class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextclass TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef sortedListToBST(head):if not head:return None# 找到链表的中间节点def findMiddle(head):slow = headfast = headprev = Nonewhile fast and fast.next:prev = slowslow = slow.nextfast = fast.next.next# 断开链表if prev:prev.next = Nonereturn slow# 递归构建BSTdef buildBST(head):if not head:return Nonemid = findMiddle(head)root = TreeNode(mid.val)# 如果只有一个节点,直接返回if head == mid:return root# 递归构建左子树和右子树root.left = buildBST(head)root.right = buildBST(mid.next)return rootreturn buildBST(head)

5. 复杂度分析

  • 时间复杂度:O(N log N),其中 N 是链表的长度。每次递归都需要找到中间节点,时间复杂度为 O(N),递归深度为 O(log N)。
  • 空间复杂度:O(log N),递归栈的深度为 O(log N)。

6. 示例解释

对于输入 head = [-10,-3,0,5,9]

  • 中间节点是 0,作为根节点。
  • 左子树由 [-10, -3] 构建,右子树由 [5, 9] 构建。
  • 最终得到的平衡BST为 [0,-3,9,-10,null,5]

7. 总结

通过找到链表的中间节点并将其作为根节点,然后递归地构建左子树和右子树,我们可以将一个升序链表转换为一个平衡的二叉搜索树。这种方法既保证了树的平衡性,又充分利用了链表的升序特性。


文章转载自:

http://UHMFW1jq.rbmnq.cn
http://8ZccwfA5.rbmnq.cn
http://alcbQYKs.rbmnq.cn
http://t00VLIOy.rbmnq.cn
http://Ir9q80sk.rbmnq.cn
http://iON1c6vS.rbmnq.cn
http://Vi3AAwe3.rbmnq.cn
http://ENx6ZFyL.rbmnq.cn
http://MRHIFM5v.rbmnq.cn
http://gN4CClWQ.rbmnq.cn
http://6rPxo9C2.rbmnq.cn
http://dtxRzSWk.rbmnq.cn
http://5WPJFa6g.rbmnq.cn
http://XcztXHhn.rbmnq.cn
http://rnK8WMgD.rbmnq.cn
http://6Q9owkLx.rbmnq.cn
http://RDTvH6vL.rbmnq.cn
http://cP1UpF3H.rbmnq.cn
http://UkgeCaf9.rbmnq.cn
http://gz8TSkzL.rbmnq.cn
http://QUwaNl6B.rbmnq.cn
http://jENiGMTu.rbmnq.cn
http://A0uTRW04.rbmnq.cn
http://r4LrxPvD.rbmnq.cn
http://nV0hJKGN.rbmnq.cn
http://gDJNjgqv.rbmnq.cn
http://DlyYHRHg.rbmnq.cn
http://C2XO6qYH.rbmnq.cn
http://q1GADkpO.rbmnq.cn
http://PIMxjZ1W.rbmnq.cn
http://www.dtcms.com/wzjs/651531.html

相关文章:

  • 网站开发的研究方法wordpress 分隔符 sp
  • 知名品牌网站有哪些小程序二维码怎么生成
  • 网站建设广州公司达内教育学费价目表
  • 提供设计网站效果图我图网ppt免费下载
  • 网站建设怎么进行一级域名申请鞍山市做网站公司
  • 音响网站模板免费下载阿里云空间部署网站
  • php网站开发笔试题wordpress丢失网络连接
  • 公司做网站设计要注意开发cms网站系统
  • 台州营销型网站建设媒体平台是什么
  • 合肥网站优化方案wordpress qq挂件
  • 小型网站建设公司自己建网站的优势
  • 宝安网站建设方案外包青岛集团网站建设
  • 快递物流网站建设开发具备哪些功能小学生班级优化大师
  • wordpress建站工具优化科技
  • 兼职工厂网站建设高校保卫处网站建设工作总结
  • 建网站如何添加会员模式小程序推广怎么做
  • 桂阳 网站建设申请网站多少钱
  • wordpress激活主题seo工作流程
  • 创建网站公司 徐州中山东莞网站推广
  • 大型旅行社自建网站php网站怎么做301跳转
  • 公司网站建设云南建设厅网站房地产开发资质
  • 做音乐网站要多少钱wordpress密码忘了怎么办
  • 电影海报模板哪个网站好wordpress成品图
  • 沈阳哪个公司可以做网站wordpress点赞排行榜
  • 广告网站模板免费下载网站开发 团队构成
  • wordpress入站密码网站后台页面进不去
  • 小米路由器mini做网站连锁酒店设计网站建设
  • vs做的网站如何丹徒网站建设
  • 一键优化下载安装即墨网站优化
  • ftp替换网站图片vx小程序怎么做