美文网首页
LintCode 178-图是否是树

LintCode 178-图是否是树

作者: 胡哈哈哈 | 来源:发表于2016-05-21 17:16 被阅读183次

分析

  • 判断边总数是否为n-1;
  • 判断一次dfs是否能访问所有节点。
class Solution {
public:
    /**
     * @param n an integer
     * @param edges a list of undirected edges
     * @return true if it's a valid tree, or false
     */
    bool validTree(int n, vector<vector<int>>& edges) {
        // Write your code here
        if (edges.size() != n - 1) return false;
        vector<vector<int>> map(n, vector<int>(n, 0));
        for (int i = 0; i < edges.size(); ++i) {
            int p1 = edges[i][0], p2 = edges[i][1];
            map[p1][p2] = map[p2][p1] = 1;
        }
        vector<bool> visited(n, false);
        dfs(map, 0, visited);
        for (int i = 0; i < visited.size(); ++i) {
            if (!visited[i]) return false;
        }
        return true;
    }
    
    void dfs(vector<vector<int>> &map, int curr, vector<bool> &visited) {
        visited[curr] = true;
        for (int i = 0; i < map[curr].size(); ++i) {
            if (map[curr][i] && !visited[i]) {
                dfs(map, i, visited);
            }
        }
    }
};

相关文章

  • LintCode 178-图是否是树

    分析 判断边总数是否为n-1; 判断一次dfs是否能访问所有节点。

  • 图是否是树

    描述 给出 n 个节点,标号分别从 0 到 n - 1 并且给出一个 无向 边的列表 (给出每条边的两个顶点), ...

  • 无向图是否是树

    https://blog.csdn.net/ouyangjinbin/article/details/51075180

  • 程序员常用的刷题网站

    1、Lintcode Lintcode.com——LintCode网站是国内较大的在线编程&测评网站。此网站提供各...

  • 二叉树的路径和

    1、二叉树的路径和https://www.lintcode.com/problem/binary-tree-pat...

  • 18年第20周:李航 | 决策树学习的通俗解释

    是否学习的决策过程解释:椭圆框内:是决策树的特征(根据特征来分类),比如<女票>;表情图:是决策树的类别(决策树是...

  • 树和图

    树和图的区别: 树是图,图不一定是树,树是图的子集 树有一个根节点,图没有 树可以递归遍历,图要看情况 树有层次划...

  • Singleton

    lintcode: http://lintcode.com/en/problem/singleton/ Java ...

  • 线段树

    昨天画了个把小时把lintcode上跟线段树的几道题用java做了一下。把线段树相关的几题都Accepted了。。...

  • 二叉树非递归遍历——已通过LintCode

    先序遍历 LintCode题目链接 中序遍历 LintCode题目链接 后序遍历 LintCode题目链接由于在L...

网友评论

      本文标题:LintCode 178-图是否是树

      本文链接:https://www.haomeiwen.com/subject/quhorttx.html