1. 题目描述
树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一
棵树。给你一棵包含 n 个节点的数,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges
列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无
向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,
具有最小高度的树(即,min(h))被称为 最小高度树 。请你找到所有的 最小高度树 并按 任意顺序 返回它们的根节点标签列表。树的 高度 是指根节点和叶子节点之间最长向下路径上边的数量。
  1. 题解
从边缘开始,先找到所有出度为1的节点,然后把所有出度为1的节点进队列,然后不断地bfs,最后找到的就是
两边同时向中间靠近的节点,那么这个中间节点就相当于把整个距离二分了,那么它就是到两边距离最小的点
,也就是到其他叶子节点最近的节点了。
  1. 代码
class Solution {public:vector<int> findMinHeightTrees(int n, vector<vector<int>>& edges) {if (n==1) return {0};map<int,vector<int>> adj;vector<int> degree(n);for (int i=0;i<edges.size();i++){adj[edges[i][0]].push_back(edges[i][1]);adj[edges[i][1]].push_back(edges[i][0]);degree[edges[i][0]]++;degree[edges[i][1]]++;}queue<int> que;for (int i=0;i<n;i++){if (degree[i]==1) que.push(i);}vector<int> res;while (!que.empty()){res.clear();int cnt=que.size();while (cnt--){int index=que.front();que.pop();res.push_back(index);for (int t:adj[index]){degree[t]--;if (degree[t]==1) que.push(t);}}}return res;}
};

LeetCode 310 最小高度树相关推荐

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

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

  2. LeetCode 310. 最小高度树(广度优先遍历)

    题目描述 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的 ...

  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. Intellij IDEA单元测试提示Test events were not received
  2. Hadoop集群搭建(四:Zookeeper环境安装)
  3. bigswitch公司
  4. java字节码文件加密_java 字节码加密源码
  5. Java核心类库篇1——简介
  6. 程序员如何通过书籍学习编程?小心用错方法,不然可能事倍功半!
  7. python+PIL+pytesser处理验证码环境搭建
  8. 5009. tinyfsm有限状态机
  9. Atom打造 c/c++编译环境(忙了一个上午)
  10. “好串”求解算法优化原理与Python实现
  11. js技术要点---document.write()方法在IE浏览器和火狐浏览器下面的兼容性问题
  12. 串口发送图片VGA显示
  13. 修改系统时间,TFS会无法登陆
  14. 学业奖惩系统c语言,c语言成绩管理系统(完整).doc
  15. 安装Numpy的简单方法
  16. “为了对电脑进行保护,已经阻止此应用。”
  17. python 批量下载视频_Python一键批量下载抖音无水印视频
  18. Android GPU Inspector
  19. 压缩文件密码相关问题
  20. Android阿拉伯语UI适配问题汇总

热门文章

  1. Linux全能终端,【MobaXterm】Windows全能终端神器—MobaXterm
  2. hadoop3.0新特性介绍
  3. f12获取网页文本_jmeter获取web页面文本内容的两种方式
  4. R语言学习 - 图形设置中英字体
  5. 嗐,别的95后一天两登Nature,你却还不知道有一款工具可以帮你校对英文文稿和回复审稿意见...
  6. 这个Nature推荐的代码海洋竟然有文章作者上传的所有可重现性脚本,涉及单细胞、微生物组、转录组分析、机器学习等相关
  7. 纯干!那些可能被你忽略的Mac系统自带工具
  8. 多功能mac代码编辑神器coderunner 4 比Xcode都强大
  9. onpagefinished等了很久才执行_互联网职业经理人的素养(二):执行力
  10. bootsrap 外边距_Bootstrap 网格系统布局详解