题目描述

对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。
格式
该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。
你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无向边, [0, 1]和 [1, 0] 是相同的,因此不会同时出现在 edges 里。

思路

详见链接

代码

class Solution:def findMinHeightTrees(self, n:int, edges:List[List[int]])->List[int]:from collections import defaultdictif not edges:return [0]graph = defaultdict(list)for x,y in edges:graph[x].append(y)graph[y].append(x)leaves = [i for i in graph if len(graph[i]) == 1]while n > 2:n -= len(leaves)next_leaves = []for leave in leaves:tmp = graph[leave].pop()graph[tmp].remove(leave)if len(graph[tmp]) == 1:next_leaves.append(tmp)leaves = next_leavesreturn list(leaves)

LeetCode 310. 最小高度树(广度优先遍历)相关推荐

  1. LeetCode 310. 最小高度树(图 聪明的BFS,从外向内包围)

    文章目录 1. 题目 2. 解题 2.1 暴力BFS 2.2 聪明的BFS 1. 题目 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被 ...

  2. LeetCode 310 最小高度树

    题目描述 树是一个无向图,其中任何两个顶点只通过一条路径连接. 换句话说,一个任何没有简单环路的连通图都是一 棵树.给你一棵包含 n 个节点的数,标记为 0 到 n - 1 .给定数字 n 和一个有 ...

  3. leetcode 310. 最小高度树 【时间击败70.67%】 【内存击败89.04%】

    数组替代队列,从超时到击败70%,用tree[0]替代new一个新的ArrayList,上升10% 思想是遍历一遍,删除度为1的节点,答案只可能为1或2 1 public List<Intege ...

  4. 310. 最小高度树

    链接:https://leetcode-cn.com/problems/minimum-height-trees/ 题解:https://leetcode-cn.com/problems/minimu ...

  5. leetcode 310. Minimum Height Trees | 310. 最小高度树(图的邻接矩阵DFS / 拓扑排序)

    题目 https://leetcode.com/problems/minimum-height-trees/ 题解 方法1:图的邻接矩阵 DFS(超时) 我一想,这不就是个图嘛,于是随手敲出一个 DF ...

  6. 2022-3-20 Leetcode 0402.最小高度树

    左右平衡的二叉搜索树是最小的.也就是说树的左右两边的节点个数相当. class Solution {private: TreeNode* dfs(vector<int>&nums, ...

  7. 310. 最小高度树(Medium)

    BFS解法 # 拓扑排序(因为是无向图,所以最中间的节点便是高度最小树的根节点),思路: # 从边缘开始,先找到所有出度为1的节点,然后把所有出度为1的节点进队列,然后不断地bfs, # 最后找到的就 ...

  8. 二叉搜索树-创建最小高度树(递归)

    题意: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 这里回忆一下二叉搜索树的概念: 对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值 ...

  9. 【数据结构与算法】之深入解析“最小高度树”的求解思路与算法示例

    一.题目要求 树是一个无向图,其中任何两个顶点只通过一条路径连接.换句话说,一个任何没有简单环路的连通图都是一棵树. 给你一棵包含 n 个节点的树,标记为 0 到 n - 1,给定数字 n 和一个有 ...

最新文章

  1. python值函数名的使用以及闭包,迭代器详解
  2. leetcode 202. Happy Number
  3. python可以下载百度文库_百度文库随便下载,解除限制
  4. 怎样用python批量处理文件夹_python批量处理文件或文件夹
  5. 为什么虚拟助手的前途一片光明
  6. Spring组件之一 JDBC Template
  7. 错误Cannot resolve org.springframework.data:spring-data-redis:2.2.6 RELEASE
  8. MongoDB干货系列1-定期巡检之Mtools
  9. Oracle查询锁表
  10. 邓俊辉 数据结构 图
  11. linux lzma命令,Ubuntu: 压缩与解压缩LZMA文件
  12. MacTeX添加.sty文件
  13. □ 影片名:《樱桃小丸子》(36004) 在线播放
  14. 妙控鼠标灵敏度太低怎么办
  15. Unity 骨骼动画
  16. Mysql、SqlServer、Oracle三大数据库的区别
  17. 学习巴菲特的正确姿势
  18. 如果你看见这个舞女是顺时针转,说明你用的是右脑;耶鲁大学耗时5年的研究成果。左脑?右脑?
  19. Python学习十四:访问列表元素、遍历列表
  20. 二级域名需要备案吗?

热门文章

  1. Talking Data副总裁高铎:我们如何赋予大数据生命力
  2. 【菜鸡学算法】用最笨最直观的方法讨论递归取中值时是不是陷入死循环
  3. 使用truss、strace或ltrace诊断软件的疑难杂症
  4. 安卓随机通话记录_几款安卓amp;苹果虚拟来电软件,带你快速逃离尬聊现场,留有情面慰人心扉...
  5. 设计模式学习每天一个——Decorator模式
  6. sshpass简介及安装
  7. 论文笔记--知识表示学习研究进展-2016
  8. init.x java_详谈jvm--Java中init和clinit的区别
  9. 富文本编辑器中空格转化为a_文本编辑器题解
  10. 易混单词 expect VS except