首页 > 解决方案 > 在 n 叉树的子节点数组中搜索一个节点

问题描述

我从 2 周开始就被这个问题困住了。

我在 Python 中有一个基本的 treenode 类:

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

然后我有一个通用的递归搜索功能:

def find_node(node, data):
    if node.data == data:
        return node

    if len(node.children)>0:
        for child in node.children:
            find_node(child, data)

我不明白为什么 Python 只在我传递给 find_node 函数的每个“数据”的第一次出现时进行搜索。

我总是传递根节点,然后传递标识我正在寻找的节点的字符串。

真是把我的头撞在墙上了。

标签: pythontreerecursive-datastructures

解决方案


您的代码中有两个问题,第一个是如果递归调用函数,您不会返回节点。第二个是,如果您只使用return find_node(child, data)该函数将在第一次传递时返回,但您只想在递归函数中找到一个节点时返回。因此你必须改变

find_node(child, data)

有类似的东西

potNode = find_node(child, data)
if not potNode is None:
    return potNode

推荐阅读