leetcode 310 : Minimum Height Trees
来源:互联网 发布:centos ip forward 编辑:程序博客网 时间:2024/05/17 06:09
1、原题如下:
For a undirected graph with tree characteristics, we can choose any node as the root. The result graph is then a rooted tree. Among all possible rooted trees, those with minimum height are called minimum height trees (MHTs). Given such a graph, write a function to find all the MHTs and return a list of their root labels.
Format
The graph contains n nodes which are labeled from 0 to n - 1. You will be given the number n and a list of undirected edges (each edge is a pair of labels).You can assume that no duplicate edges will appear in edges. Since all edges are undirected, [0, 1] is the same as [1, 0] and thus will not appear together in edges.
Example 1:
Given n = 4, edges = [[1, 0], [1, 2], [1, 3]]
0 | 1 / \ 2 3
return [1]
Example 2:
Given n = 6, edges = [[0, 3], [1, 3], [2, 3], [4, 3], [5, 4]]
0 1 2 \ | / 3 | 4 | 5
return [3, 4]
Note:
(1) According to the definition of tree on Wikipedia: “a tree is an undirected graph in which any two vertices are connected by exactly one path. In other words, any connected graph without simple cycles is a tree.”
(2) The height of a rooted tree is the number of edges on the longest downward path between the root and a leaf.
2、解题如下:
class Solution {public: struct vertex { unordered_set<int> neighbor; bool isLeaf() const{return neighbor.size()==1;} }; vector<int> findMinHeightTrees(int n, vector<pair<int, int>>& edges) { vector<int> tmp1; vector<int> tmp2; vector<int>* tmp1_1=&tmp1; vector<int>* tmp2_1=&tmp2; if(n==1) { tmp1.push_back(0); return tmp1; } if(n==2) { tmp1.push_back(0); tmp1.push_back(1); return tmp1; } vector<vertex> vertices(n); for(auto i:edges) { vertices[i.first].neighbor.insert(i.second); vertices[i.second].neighbor.insert(i.first); } for(int i=0;i<n;i++) { if(vertices[i].isLeaf()) { tmp1_1->push_back(i); } } while(1) { for(auto j:*tmp1_1) { for(auto k: vertices[j].neighbor) { vertices[k].neighbor.erase(j); if(vertices[k].isLeaf()) tmp2_1->push_back(k); } } if(tmp2_1->empty()) { return *tmp1_1; } tmp1_1->clear(); swap(tmp1_1,tmp2_1); } }};
- 【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 Minimum Height Trees
- Minimum Height Trees | LeetCode
- leetcode Minimum Height Trees
- LeetCode Minimum Height Trees
- Leetcode: Minimum Height Trees
- leetcode - Minimum Height Trees
- Leetcode Minimum Height Trees
- Shell 编程快速入门
- jsoncpp构造json字符串和json数组
- PHP 与 JavaScript 的运算符优先级差异
- C++中的out-of-line虚函数
- angularjs指令作用及用法
- leetcode 310 : Minimum Height Trees
- UITextField输入到最大限值以后不能删除
- 西邮实验室汇总项目
- sql server查询当前时间之后满足条件的指定条数据
- Android中像素单位dip、dpi、px、pt、sp、in等等的全面详解
- Kaggle上的MNIST竞赛能刷到的最高分是多少
- 监控电量和充电状态
- win10下安装 迅雷精简版,提示阻止此应用
- java串口通信