有向函数中的值的递归加法

2024-04-25 01:23:28 发布

您现在位置:Python中文网/ 问答频道 /正文

早上好,
我的数据结构是树。其中除根节点外的每个节点都具有属性-“相对于父节点的比例”。但是只有叶子有额外的属性'value'。我想做的是编写一个函数来计算树中所有节点的值。
例如,在下图中,它们将按如下方式计算:

value of b= 5*0.3 + 6*0.7 = 5.7;
value of c= 7*1 = 7;
value of d = 8*0.5+9*0.4+10*0.1=8.6;
value of a = 5.7*0.3+7*0.4+8.6*0.3=7.09;

我从数据结构的本质出发,假设这个设置节点值的函数应该是递归的。 如果python或python提供完整的函数描述,那么它将是完整的。

这是这棵树的图像: data structure

现在,根据Srinivas的建议,我尝试了:

^{pr2}$

但它给出了一个错误:TypeError:不支持*:“float”和“NoneType”的操作数类型。我想由于某种原因,它可以只做一个早午餐-a->;b->;e a->;b->;f,但不能去下一个。。。在


Tags: of函数图像gt数据结构属性节点value
1条回答
网友
1楼 · 发布于 2024-04-25 01:23:28

有一些初始代码会很好,但这是我的机会。在

这个行吗?在

 #Assuming you've defined root, leaf as special subclasses of type node. 
    #With the root having no proportion attrib set.

 def answer(node):
    if not node: # no tree
        return 0
    if node.children = []: # leaf
        return node.value
    value_list = []
    for child in node.children:
        value_list.append(child.proportion * answer(child))
    node.value = sum(value_list)

说明:考虑一个类似于您所概述的结构。在

用根answer(root)调用answer函数。 它反过来调用b,谁在e上调用它。e是返回其值的叶。然后f。函数回溯到现在有值5.7b。以此类推。。在

相关问题 更多 >