Leetcode. Add to List 310. Minimum Height Trees
来源:互联网 发布:win7无网络访问权限 编辑:程序博客网 时间:2024/05/21 17:31
一个节点的”高度”是由距离最远的叶子节点决定的,单独计算一个节点的“高度”是O(n)的,计算所有的节点就是O(n^2)的,这其中有很多重复的工作,但是并不是很容易优化。
特殊的是所有叶子节点的“高度”都是1,而第二层叶子节点的“高度”是2,依次增加,直到树的中央,我想这也是样例输入没有把树画成传统样子的原因,就是在提示树中央的节点就是最深的节点,也是“高度”最大的节点。所以,先找到所有叶子节点(度为1),然后把他们都干掉,同时检查与他们相连的节点是不是新的叶子节点,反复这样会一层一层地拨开树。到达中央的条件是只剩下1个或者2个节点。
class Solution {public: vector<int> findMinHeightTrees(int n, vector<pair<int, int>>& edges) { if (n == 1) return {0}; vector<unordered_set<int>> links(n); for (auto edge : edges) { links[edge.first].insert(edge.second); links[edge.second].insert(edge.first); } queue<int> q; for (int i=0;i<n;++i) { if (links[i].size() == 1) { q.push(i); } } while (n>2) { int numLeaf = q.size(); n -= numLeaf; while(numLeaf--) { int leaf = q.front(); q.pop(); for (auto node : links[leaf]) { links[node].erase(leaf); if (links[node].size() == 1) { q.push(node); } } } } vector<int> res; while(!q.empty()) { res.push_back(q.front()); q.pop(); } return res; }};
阅读全文
0 0
- Leetcode. Add to List 310. Minimum Height Trees
- 310. Minimum Height Trees Add to List
- Add to List 310. Minimum Height Trees
- Leetcode 310. Minimum Height Trees
- [leetcode] 310. Minimum Height Trees
- 310. Minimum Height Trees LeetCode
- leetcode 310. Minimum Height Trees
- LeetCode *** 310. Minimum Height Trees
- 【LeetCode】310. Minimum Height Trees
- [leetcode] 310.Minimum Height Trees
- leetcode-310. Minimum Height Trees
- [leetcode] 310. Minimum Height Trees
- 【LeetCode】310. Minimum Height Trees
- LeetCode 310. Minimum Height Trees
- Leetcode 310. Minimum Height Trees
- [LeetCode]310. Minimum Height Trees
- Leetcode: 310.Minimum Height Trees
- 【Leetcode】310. Minimum Height Trees
- 【Maven】传递性依赖
- 稳定排序和不稳定排序的意义与分析
- Angular4中关于component组件如何获取前端页面用户输入的值
- 文件系统有哪些
- 网站日志分析项目案例
- Leetcode. Add to List 310. Minimum Height Trees
- golang并发学习笔记
- OKHttp使用详解及源码解析
- python入门指南参考--启蒙
- Ubuntu16.04主题美化及软件安装
- 校招编程题目(2) JavaScript:购物车操作(京东)
- TypeError: 'NoneType' object is not iterable
- 3个著名加密算法(MD5、RSA、DES)的解析
- [网络流24题]魔术球问题(简化版) 最小路径覆盖+二分答案 + 很快的最大流