python - 在 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 函数的每个“数据”的第一次出现时进行搜索。
我总是传递根节点,然后传递标识我正在寻找的节点的字符串。
真是把我的头撞在墙上了。
解决方案
您的代码中有两个问题,第一个是如果递归调用函数,您不会返回节点。第二个是,如果您只使用return find_node(child, data)
该函数将在第一次传递时返回,但您只想在递归函数中找到一个节点时返回。因此你必须改变
find_node(child, data)
有类似的东西
potNode = find_node(child, data)
if not potNode is None:
return potNode
推荐阅读
- java - Spring Boot:如何为删除其余模板编写单元测试用例
- html - 无法使用 flexbox 将项目对齐到中心
- html - 'mailto' 从静态站点提交表单数据的任何替代方法?
- java - swing中custome jcombobox的标题背景发生意外变化
- php - Google 日历中的空白白屏
- c# - Unity中的移动真的很慢
- configure - config.status:错误:找不到输入文件:`po/Makefile.in.in'
- python-3.x - 另一个单元格中等于零值的空白单元格应在 python、pandas 中返回 True
- r - 从 FedData 包中使用 R 中的 get_ssurgo 下载失败
- python - 我的自定义方言输出在处理 csv 文件时未使用双引号