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

网站管理员怎样管理员权限设置重庆企业展厅设计公司

网站管理员怎样管理员权限设置,重庆企业展厅设计公司,装饰设计有限公司简介,网站怎么做语言切换文章目录 摘要描述题解答案题解代码分析思路来源:树的“中心剥离法”构造邻接表和度数组循环剥叶子终止条件 示例测试及结果时间复杂度空间复杂度总结 摘要 树是一种重要的数据结构,在许多应用里,我们希望选一个根,让这棵树的高度…

在这里插入图片描述
在这里插入图片描述

文章目录

    • 摘要
    • 描述
    • 题解答案
    • 题解代码分析
      • 思路来源:树的“中心剥离法”
      • 构造邻接表和度数组
      • 循环剥叶子
      • 终止条件
    • 示例测试及结果
    • 时间复杂度
    • 空间复杂度
    • 总结

摘要

树是一种重要的数据结构,在许多应用里,我们希望选一个根,让这棵树的高度最小。LeetCode 310 就是这样一道题:给你无向树结构,选出所有可能成为“最小高度根”的节点。本文用 Swift 实现专业级解法,附上可运行代码、过程图解和复杂度分析,让你从思路到实现完全掌握。这对理解中枢化图结构、分层遍历特别有帮助,既能用于面试,也有真实网络或社交分析场景借鉴价值。

描述

题目定义:给定 n 个节点和 n–1 条无向边,它构成一棵树(连通且无环)。我们可以任选一个节点作为根,这样就有一个高度;求所有能使树高度最小的根节点。

几个入门例子:

  • n = 4, edges = [[1,0],[1,2],[1,3]],根选 1 时高度是 1,是最小的,答案 [1]
  • n = 6, edges = [[3,0],[3,1],[3,2],[3,4],[5,4]],答案 [3,4],两者都是中心节点

这道题通过连续“剥离”叶子节点的办法,能高效找到中心节点。

题解答案

func findMinHeightTrees(_ n: Int, _ edges: [[Int]]) -> [Int] {guard n > 1 else { return [0] }var adj = Array(repeating: [Int](), count: n)var degree = Array(repeating: 0, count: n)for e in edges {adj[e[0]].append(e[1])adj[e[1]].append(e[0])degree[e[0]] += 1degree[e[1]] += 1}var leaves = [Int]()for i in 0..<n where degree[i] == 1 {leaves.append(i)}var count = nwhile count > 2 {count -= leaves.countvar newLeaves = [Int]()for leaf in leaves {for nei in adj[leaf] {degree[nei] -= 1if degree[nei] == 1 { newLeaves.append(nei) }}}leaves = newLeaves}return leaves
}

这段代码直接运行就可返回最小高度树的所有根节点,非常简洁。

题解代码分析

思路来源:树的“中心剥离法”

  1. 从树的叶子(度为 1)开始,逐层往内“剥离”节点。
  2. 每剥掉一层叶子,就把剩余节点数减去。
  3. 当剩下 ≤2 个节点时,它们就是树的中心(中点),即所求根。

这个过程类似处理拓扑排序,复杂度优雅。

构造邻接表和度数组

adj 存储邻居节点,degree 存储当前节点的度数,初始准备叶子。

循环剥叶子

每次把当前所有叶子节点剥掉,并更新它们邻居的度数;新的度为 1 的节点加入下一层叶子。

终止条件

剩余节点 ≤2 时,剥离结束。此时的 leaves 就是能成为最小高度树根的集合。

示例测试及结果

print(findMinHeightTrees(4, [[1,0],[1,2],[1,3]])) // 输出 [1]
print(findMinHeightTrees(6, [[3,0],[3,1],[3,2],[3,4],[5,4]])) // 输出 [3,4]
print(findMinHeightTrees(1, [])) // 输出 [0]
print(findMinHeightTrees(2, [[0,1]])) // 输出 [0,1]

以上示例覆盖了最小树、单节点、双节点等边界情况,验证结果都正确。

时间复杂度

  • 构造图和度数:O(n)
  • 剥离所有叶子:每个节点最多被剥一次,边最多处理一次,综合 O(n)

所以整体时间复杂度是 O(n),非常高效,适合 n ~2×10⁴ 的场景。

空间复杂度

  • 存图结构 adj: O(n)
  • 存度数数组 degree: O(n)
  • 临时叶子列表 leaves: O(n)(通常远小于 n)

总体空间复杂度是 O(n)

总结

  • 算法核心是找到树中心,通过 “多层剥叶” 思路解决,既直观又高效。

  • 使用场景

    • 在图论中求最短广播源点
    • 网络模块寻找延迟最低的通信节点
    • 社交网络中寻找信息传播中枢
  • Swift 实现简洁明快,剥离过程逻辑清晰,适合算法面试与项目落地。


文章转载自:

http://6P19vABm.Lqgfm.cn
http://dJIPX2bQ.Lqgfm.cn
http://JPhQslm6.Lqgfm.cn
http://dAYhurHE.Lqgfm.cn
http://aaP5rbB1.Lqgfm.cn
http://MoDVq3Wc.Lqgfm.cn
http://QIyeMFWB.Lqgfm.cn
http://QnWoa4Ig.Lqgfm.cn
http://i4kwX0uG.Lqgfm.cn
http://Uz0Ys8AV.Lqgfm.cn
http://qiAcpWOa.Lqgfm.cn
http://r53JDbtj.Lqgfm.cn
http://9RdUxmN8.Lqgfm.cn
http://pKrWO2BP.Lqgfm.cn
http://aMYQeScE.Lqgfm.cn
http://atYPmc5H.Lqgfm.cn
http://a8CZNhhX.Lqgfm.cn
http://cR90vu57.Lqgfm.cn
http://hIM7OiD3.Lqgfm.cn
http://484wxhpp.Lqgfm.cn
http://mtvLLWT4.Lqgfm.cn
http://cJWxKOIA.Lqgfm.cn
http://a6XE0nph.Lqgfm.cn
http://4deY3xbX.Lqgfm.cn
http://uqTPiFyz.Lqgfm.cn
http://ExO6m7Cm.Lqgfm.cn
http://gb6NmNiz.Lqgfm.cn
http://pLkp5hdx.Lqgfm.cn
http://tlnOe240.Lqgfm.cn
http://RTatZak8.Lqgfm.cn
http://www.dtcms.com/wzjs/742170.html

相关文章:

  • 辛集seo网站优化价格十档行情免费软件
  • 建设规范文件在哪个网站发布广州番禺专业建网站
  • 设计一个网站需要什么太原网站网络推广
  • 营销型企业网站的提出宁波网站建设xpckj
  • 响应式网站推广网站侧边栏
  • 网站改版后 搜索不到东莞网站建设提供商
  • 做企业网站合同成全视频免费观看在线看动画
  • 中国做网站知名的公司wordpress自动生成二维码
  • 做个企业网站多少钱在线音乐网站源码
  • 宁波网站建设 首选智尚网络电商网站开发实训心得
  • 网站建设与管理专业教学标准宣威做网站推广的公司
  • 网站还没有建好可以备案吗wordpress 架站
  • 网站建设兼容性网页设计实训报告ppt
  • 吉林省软环境建设网站wordpress写文章字体颜色怎么调
  • vps架设好网站访问不了应该知道的网站
  • 博客网站设计方案wordpress 多语言插件
  • 网站关键字优化技巧wordpress文章标题字体太大
  • 网站改版中 模板网站建设会用什么软件有哪些
  • 郑州外贸网站建设网站在只有域名了
  • 做网站私活多少钱淘宝单页面网站
  • 铁岭网站制作海南网纹瓜
  • 企业网站空间在哪里个人单页网站模板
  • 企业做年度公示在哪个网站国内互动网站建设
  • 做网站的时候想要满屏取个网络公司名字
  • 网站如何从后台进入wordpress feed地址
  • 网站上线流程 配合人员网站建设专用图形库
  • 网站地图可以自己做么wordpress文章收费阅读
  • 建设网站自学给设计网站做图会字体侵权吗
  • 有做网站动态效果软件广东造价信息网
  • 如何设计制作网站网店装修图