zoukankan      html  css  js  c++  java
  • 178. 图是否是树

    178. 图是否是树

    中文English

    给出 n 个节点,标号分别从 0 到n - 1 并且给出一个 无向 边的列表 (给出每条边的两个顶点), 写一个函数去判断这张`无向`图是否是一棵树

    样例

    样例 1:

    输入: n = 5 edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
    输出: true.
    

    样例 2:

    输入: n = 5 edges = [[0, 1], [1, 2], [2, 3], [1, 3], [1, 4]]
    输出: false.
    

    注意事项

    你可以假设我们不会给出重复的边在边的列表当中. 无向边 [0, 1] 和 [1, 0] 是同一条边, 因此他们不会同时出现在我们给你的边的列表当中。

     
     
    输入测试数据 (每行一个参数)如何理解测试数据?

     BFS写法

    图和树的区别:

    图存在n个点,m条边

    树的话,存在上下级关系,n个点,n-1条边

    class Solution:
        """
        @param n: An integer
        @param edges: a list of undirected edges
        @return: true if it's a valid tree, or false
        """
        def validTree(self, n, edges):
            # write your code here
            #如何判断,是否是树,如果是树的话,n个点,存在n-1条边
            #图的话,n个点,m条边
            
            #判断当前该edges边是否是树的话,可以判断边长个数
            #如果边长直接是不等于n-1,返回False
            if (len(edges) != n - 1): return False 
            
            #否则,判断visted的个数
            visted = {}
            queue = [0]
            array = collections.defaultdict(list)
            
            for edge in edges:
                array[edge[0]].append(edge[1])
                array[edge[1]].append(edge[0])
            
            
            while queue:
                pop_node = queue.pop(0)
                visted[pop_node] = True 
                
                #取出当前节点的所有邻接点,从0开始出发往下找所有的邻接点,当出现断层,说明不是树,visted自然会减少
                for edge in array[pop_node]:
                    if edge not in visted:
                        visted[edge] = True
                        queue.append(edge)
            
            print(visted)
            return len(visted) == n 
            
  • 相关阅读:
    四则运算程序总结
    软件体系结构第三章-解释器风格
    软件工程概论随笔2
    软件体系结构第二章随笔
    软件体系结构第一章随笔
    关于如何衡量个人在各自团队的效率和绩效
    查询sql数据库中表占用的空间大小
    如何调试触发器
    sql server查看某个表上的触发器
    触发器deleted 表和 inserted 表详解
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13458085.html
Copyright © 2011-2022 走看看