深度优先搜索未返回正确的对象类型

2024-04-20 13:15:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码遍历树对象,但是我不能让它在找到键时返回node对象。它给我的不是类型。这些对象很简单,包含在下面。你知道吗

class StructureTree:
    def __init__(self, issueID, depth):
        self.issueID = issueID
        self.depth = depth
        self.children = []
        self.worklog_data_rows = []
        self.structure_data_row = [] #contains issue data for any issue found in the global structure


    def addChild(self, elem):
        self.children += [elem]

    def __repr__(self):
        return "<%d : %d>" % (self.issueID, self.depth)


class StructureForest:
    def __init__(self):

        self.trees = []
        self.roots =[]

    def addRoot(self, root):
        self.roots += [root]

def DFS(node, key):
'''
Depth First Traversal (In-order).
@node -- int
@key -- int
'''
    if node.issueID == key:
        print "Found!"
        return node
    else:
        for child in node.children:
            print "here"
            return DFS(child, key)


def search_node(n_tree_forest, key):
'''
Traverses entire forest.
@key -- int
'''
    for root in n_tree_forest.roots:
       val = DFS(root, key)
       return val

Tags: 对象keyinselfnodefordatareturn
2条回答

嗨,我想我看到的问题是,当你进入else语句时,你并没有返回任何东西,你必须这样做才能正确递归。修改DFS方法。。。你知道吗

def DFS(node, key):

    if node.issueID == key:
        print "Found!"
        return node.issueID
    else:
        for child in node.children:
            print "here"
            val = DFS(child, key)
            if val: return val
         return False

在主函数或任何递归步骤中都不会返回值。两次调用DFS都需要执行return DFS(..., ...)。你知道吗

相关问题 更多 >