首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查图形是否为bipartite.why ?我的函数是否返回none?

检查图形是否为bipartite.why ?我的函数是否返回none?
EN

Stack Overflow用户
提问于 2020-05-30 04:11:23
回答 2查看 42关注 0票数 0
代码语言:javascript
复制
import collections
class Solution(object):
    def possibleBipartition(self, N, dislikes):
        graph = collections.defaultdict(list)
        for u, v in dislikes:
            graph[u].append(v)
            graph[v].append(u)

        color = {}
        def dfs(node, c = 0):
            if node in color:
                return color[node] == c
            color[node] = c
            for nei in graph[node]:
                dfs(nei,c^1)

        for node in range(1, N+1):
            if node not in color:
                dfs(node)
g=Solution()
N=3
dislikes=[[1,2],[2,3]]
print(g.possibleBipartition(N, dislikes))

许多解决方案都是可用的,online.But我对递归是个新手。我想知道为什么我的函数不返回任何内容,因为这些知识稍后会对我有所帮助:)提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-30 04:30:15

看起来它返回了None,因为你的代码中没有return ...。我会确保你显式地返回你需要的地方。例如,您可能希望添加返回语句的两个点:

代码语言:javascript
复制
return dfs(nei,c^1)

在您的dfs()函数中以及:

代码语言:javascript
复制
return dfs(node)

在您的possibleBipartition()函数中。

请注意,如果Python中有返回值,则需要显式指定该返回值,这与Racket和Haskell等语言不同。

票数 0
EN

Stack Overflow用户

发布于 2020-05-30 04:30:25

从表面上看,该函数返回None,因为没有return语句。因此,函数possibleBipartition不会返回任何内容(即None)。这只是一个语法问题,python允许您在没有任何错误的情况下完成这项工作,这可能会让新手感到困惑。为了让打印语句不仅仅打印None,您需要从函数中返回一些内容。当且仅当possibleBipartition有效时,返回True可能是一个好主意。

您可以尝试的一个调整是检查您在函数中构建的颜色字典,以查看"possibleBipartition“是否有效。这可以在知道以下事实的情况下实现:一个图有一个有效的二分当且仅当每个顶点只属于一种颜色(在你的例子中是0或1)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62093935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档