python树结构查询_python-查找树中两个节点之间的(保证唯一)路...

我有一个(可能)简单的图形遍历问题.我是使用networkx作为图形数据结构的图形新手.我的图总是这样:

0

1 8

2 3 9 10

4 5 6 7 11 12 13 14

我需要返回从根节点到给定节点的路径(例如,path(0,11)应该返回[0,8,9,11]).

我有一个解决方案,它通过传递一个列表来工作,该列表会随着树的移动而增大和缩小,以跟踪路径的样子,最终在找到目标节点时返回:

def VisitNode(self, node, target, path):

path.append(node)

# Base case. If we found the target, then notify the stack that we're done.

if node == target:

return True

else:

# If we're at a leaf and it isn't the target, then pop the leaf off

# our path (backtrack) and notify the stack that we're still looking

if len(self.neighbors(node)) == 0:

path.pop()

return False

else:

# Sniff down the next available neighboring node

for i in self.neighbors_iter(node):

# If this next node is the target, then return the path

# we've constructed so far

if self.VisitNode(i, target, path):

return path

# If we've gotten this far without finding the target,

# then this whole branch is a dud. Backtrack

path.pop()

我感到骨子里没有必要传递这个“路径”列表…我应该能够使用调用堆栈来跟踪该信息,但是我不知道如何…有人可以启发一下我如何使用堆栈来递归地解决路径问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
树编辑距离是一种用于比较两个树之间相似程度的算法。APTED(Approximate Tree Edit Distance)算法是一种高效的树编辑距离算法,它可以计算出两个树之间的编辑距离。 APTED算法的核心是一个动态规划过程,它将两个树之间的编辑距离分解为子问题,然后逐步求解。该算法的时间复杂度为O(n^2),其中n是树中节点的数量。 APTED算法的输入是两个树,输出是它们之间的编辑距离。该算法可以应用于许多领域,例如生物信息学、计算机视觉等。 在Python中,可以使用第三方库“apted”来实现APTED算法。该库提供了一个名为“Apted”的类,可以计算两个树之间的编辑距离。使用该库需要先安装它,可以使用pip命令进行安装: ``` pip install apted ``` 然后,可以按照以下步骤使用该库: 1.构建两个树的表示方式,例如使用字典表示树的结构。 2.创建“Apted”对象,将两个树作为参数传递给它。 3.调用“Apted”对象的“compute_edit_distance()”方法,计算两个树之间的编辑距离。 下面是一个示例代码,演示了如何使用“apted”库计算两个树之间的编辑距离: ``` from apted import APTED, Tree # 构建两个树的表示方式 tree1 = Tree('(A(B(C)(D))(E(F)))') tree2 = Tree('(A(B(C)(D))(E(G)))') # 创建“Apted”对象 apted = APTED(tree1, tree2) # 计算两个树之间的编辑距离 edit_distance = apted.compute_edit_distance() print(edit_distance) # 输出:1.0 ``` 在上面的例子中,我们构建了两个树的表示方式,并将它们作为参数传递给“Apted”对象。然后,调用“compute_edit_distance()”方法计算它们之间的编辑距离,输出结果为1.0。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值