python - 在python中使用递归查找树中的节点

标签 python recursion tree

class Node:
    def __init__(self, tree, data, parent=None):

        self.data = data
        self.parent = parent
        self.children = []   
        self.tree = tree

     def find(self, x):

        if self.data is x:
            return self
        elif self.children:
            for node in self.children:
                return node.find(person)
        else:
            return None

我真的被困住了,我似乎无法在 Node 类中创建一个方法来查找带有数据 x 的 Node 并返回该 Node。如果没有找到 Node,则返回 None。

最佳答案

您正在子项中搜索parent,而您应该搜索x

class Node():
    def __init__(self, tree, data, parent=None):
        self.data = data
        self.parent = parent
        self.children = []   
        self.tree = tree

    def find(self, x):
        if self.data is x: return self
        for node in self.children:
            n = node.find(x)
            if n: return n
        return None


>>> n = Node(None, 1)
>>> n.children = [Node(None, 2), Node(None, 3)]
>>> print n.find(3).data
3

关于python - 在python中使用递归查找树中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18047634/

相关文章:

c++ - 在 C++ 中递归执行到你的函数有多远?

java - 搜索未排序树的特定节点

Python Pandas : Two ways null values table

python - 从 Pandas 系列的索引列表中删除字符串条目

python - 如何将其转换为 SQLObject : SELECT DISTINCT columnname WHERE

c++ - 二叉搜索树中具有最小值的节点

java - 在 Java 中表示线程注释的最有效数据结构?

python - 使用 ggplot 和 pandas 在 Python 中绘制事件密度

algorithm - 是Dijkstra算法,动态规划

c++ - 递归中的默认返回值