2017.10.19
首先要明白什么样子的图是数:没有环的连通图就是树。
或者是图连通,且边数为n-1;
public boolean validTree(int n, int[][] edges) {
// write your code here
HashMap<Integer,LinkedList<Integer>> map = new HashMap<>();
for(int i = 0 ; i < n ; i++){
LinkedList<Integer> neighbor = new LinkedList<>();
map.put(i,neighbor);
}
for(int[] i : edges){
map.get(i[0]).add(i[1]);
map.get(i[1]).add(i[0]);
}
HashSet<Integer> visit = new HashSet<Integer>();
LinkedList<Integer> queue = new LinkedList<>();
queue.addFirst(0);
int tmp = 0;
while(!queue.isEmpty()){
tmp = queue.pollLast();
//System.out.print(tmp + " ");
if(visit.contains(tmp)){
return false;
}
visit.add(tmp);
for(int x : map.get(tmp)){
queue.addFirst(x);
map.get(x).remove(Integer.valueOf(tmp));
}
}
if(visit.size() == n){
return true;
}
return false;
}