我确信这是一个微不足道的问题,但已经晚了。由于我正在学习机器学习类(class),我最近开始自学 Python。我通常使用 C++,所以对于 Python,我只想使用包,而不是在 Python 中重做我在 C++ 中所做的事情。话虽这么说,我刚刚安装了 bintrees 2.0.1
,它有一个 AVL 树。
我正在尝试执行“中序”遍历,在每个节点上运行类函数。文档中有此行 foreach(f, [order]) -> 访问树的所有节点(0 = 'inorder', -1 = 'preorder' 或 +1 = 'postorder')并调用 f(k, v) 对于每个节点,O(n)
。我已经仔细查找了使用此树函数的语法示例,但是,我无法让它工作。我已经尝试使用“var”作为 AVL 树数据结构进行以下操作:
foreach(var, 0): 方法()
var.foreach(method(), 0)
foreach(var, 0).method()
什么都不起作用。也许我累了,但我也无法在网络上的任何地方找到示例。预先感谢您的帮助。
最佳答案
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
关于python - 二叉树方法示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961615/