博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Graph Valid Tree
阅读量:6554 次
发布时间:2019-06-24

本文共 1939 字,大约阅读时间需要 6 分钟。

Problem Description:

Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), write a function to check whether these edges make up a valid tree.

For example:

Given n = 5 and edges = [[0, 1], [0, 2], [0, 3], [1, 4]], return true.

Given n = 5 and edges = [[0, 1], [1, 2], [2, 3], [1, 3], [1, 4]], return false.

Hint:

    1. Given n = 5 and edges = [[0, 1], [1, 2], [3, 4]], what should your return? Is this case a valid tree?
    2. According to the : “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.”

Note: 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 inedges.


As suggested by the hint, just check for cycle and connectedness in the graph. Both of these can be done via DFS.

The code is as follows.

1 class Solution { 2 public: 3     bool validTree(int n, vector
>& edges) { 4 vector
> neighbors(n); 5 for (auto e : edges) { 6 neighbors[e.first].push_back(e.second); 7 neighbors[e.second].push_back(e.first); 8 } 9 vector
visited(n, false);10 if (hasCycle(neighbors, 0, -1, visited))11 return false;12 for (bool v : visited)13 if (!v) return false; 14 return true;15 }16 private:17 bool hasCycle(vector
>& neighbors, int kid, int parent, vector
& visited) {18 if (visited[kid]) return true;19 visited[kid] = true;20 for (auto neigh : neighbors[kid])21 if (neigh != parent && hasCycle(neighbors, neigh, kid, visited))22 return true;23 return false;24 }25 };

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4738788.html

你可能感兴趣的文章
常见下载节点
查看>>
深度学习梯度消失或爆炸问题
查看>>
python-opencv boundingRect使用注意
查看>>
newlisp 注释生成文档
查看>>
MySQL float 与decimal 各中的区别。
查看>>
PHP中set_magic_quotes_runtime()和get_magic_quotes_gpc()
查看>>
The sound of silence引发的关于互联网以及教育的利弊思考
查看>>
普华永道全球CEO报告:巴西企业家对未来预期改善
查看>>
自制Kindle电子书转化的实用技巧
查看>>
PyCon 2018:Facebook如何在4年间全面转向Python3?
查看>>
Flutter 布局(三)- FittedBox、AspectRatio、ConstrainedBox详解
查看>>
React Native填坑之旅--Stateless组件
查看>>
技术沙龙|区块链商用落地的策略与技术坑-区块链扩展和Fabric商用(杭州)
查看>>
java读写文件大全
查看>>
Spring的常用注解
查看>>
我的友情链接
查看>>
java.lang.OutOfMemoryError总结
查看>>
IIS下虚拟主机的四种使用方法
查看>>
腾讯技术工程 | 腾讯AI Lab解析2017 NIPS三大研究方向,启动教授及学生合作项目...
查看>>
搭建android + cordova环境
查看>>