我被困在一个涉及项目树的编程问题上。问题本身只是更大问题的子问题(但我不会在这里发布它,因为它并不真正相关)。任何人的问题是:
我正在尝试遍历树中的每条路径并计算相关值。
情况例如在这棵树中:
a
b b
现在我应该得到的结果是乘法如下:
离开1 = a * b
离开2 = a * (1-b)
离开3 = (1-a) * b
离开4 = (1-a) * (1-b)
因此,树中较低一级的叶子基本上就是结果(请注意,它们在现实中并不存在,只是概念性的)。
现在,我想递归地执行此操作,但存在一些问题: a 和 b 的值是在遍历期间生成的,但例如 b 的值应该只生成 1 次。所有值都是 0 或 1。如果取节点 A 的左子节点,则在乘法中使用值 A。您使用值 1-A 的正确路径。
此外,树总是完美的,即完整且平衡。
现在我有什么(我用python编程,但它更多的是我对这个问题感兴趣的一般算法):
def f(n):
if n == 1:
return [1]
generate value #(a, b or whatever one it is)
g = f(n/2)
h = scalarmultiply(value,g)
return h.append(g - h)
请注意,g 和 h 是列表。我的一位教授提供了这段代码作为可能的帮助,但我不认为这能达到我想要的效果。至少,它不会给我一个列表 h ,其中包含每个路径的结果。特别是,我不认为它区分b
和1-b
。我看错了吗,我应该怎么做?
我在编程方面不是很有经验,所以如果可以的话,试着简单地解释一下:-)