我确信这是一个微不足道的问题,但现在已经很晚了。我最近开始自学Python,因为我正在学习机器学习课程。我通常使用C ++,所以使用Python,我只想使用包而不是重做我用C ++在Python中完成的东西。话虽这么说,我刚刚安装了bintrees 2.0.1
,它有一个AVL树。
我正在尝试进行'inorder'遍历,在每个节点上运行一个类函数。该文档包含此行foreach(f, [order]) -> visit all nodes of tree (0 = ‘inorder’, -1 = ‘preorder’ or +1 = ‘postorder’) and call f(k, v) for each node, O(n)
。我一直在寻找使用这个树函数的语法示例,但是,我无法让它工作。我尝试了以下'var'作为AVL树数据结构:
foreach(var, 0): method()
var.foreach(method(), 0)
foreach(var, 0).method()
什么都行不通。也许我累了,但我也找不到网上任何地方的例子。在此先感谢您的帮助。
答案 0 :(得分:3)
function signature应为var.foreach(method, 0)
,其中方法的格式为f(k, v)
,整数(-1,0,+ 1)定义了您对节点的排序方式。
函数f(k, v)
应该使用每个节点的密钥(k)和值(v)。
一个例子是:
from bintrees import AVLTree
d = {'a':1, 'b':2, 'c':3}
t = AVLTree(d)
def foo(k, v):
print k*v
t.foreach(foo)
# a
# bb
# ccc