在python中使用递归查找树中的节点
我真的被卡住了,我似乎无法在我的Node类中创建一个方法来查找包含数据x的节点并返回该节点。如果没有找到节点,它将返回None 我认为立即的解决办法是改变这一点在python中使用递归查找树中的节点,python,recursion,tree,Python,Recursion,Tree,我真的被卡住了,我似乎无法在我的Node类中创建一个方法来查找包含数据x的节点并返回该节点。如果没有找到节点,它将返回None 我认为立即的解决办法是改变这一点 class Node: def __init__(self, tree, data, parent=None): self.data = data self.parent = parent self.children = [] self.tree = tre
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
对此
for node in self.children:
return node.find(person)
您正在儿童中搜索
parent
,而您应该搜索x
for node in self.children:
res = node.find(person)
if res is not None:
return res
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