用Python计算元组的二叉树中的整数和

时间:2018-12-14 07:05:22

标签: python tree binary sum tuples

我一直很难理解这个概念,而我的教授并没有很好地涵盖这个话题。这个问题需要我编写一个函数来计算组成元组的二叉树的整数之和。

为我提供了以下代码:

node_one = (None, 1, None) node_two = (node_one, 2, node_one) node_three = (node_two, 3, None) node_four = (node_three, 4, node_three)

我需要编写一个接受node_four作为参数并返回树中整数计数的函数,如下所示:

def TreeSum(t): #fill in

TreeSum(node_four) # This should return 18

如果您能帮助我理解如何解决这个问题,请您永远感激!

2 个答案:

答案 0 :(得分:1)

如果您忘记了所有有关元组和其他实现细节的信息,而只关注树,则

  • 如果树为空,则总和为0
  • 否则,它是“此节点”中的数字和子树的总和。

在Python中:

def tree_sum(t):
    return 0 if is_empty(t) else data(t) + tree_sum(left(t)) + tree_sum(right(t))

请注意,这完全与树的表示方式无关。

现在我们可以为“元组树”添加与树相关的功能:

def is_empty(t):
    return t is None

def data(t):
    return t[1]

def left(t):
    return t[0]

def right(t):
    return t[2]

答案 1 :(得分:0)

我解决了提示! 这是有效的解决方案:

sum = 0

def TreeSum(t): global sum

for i in range(len(t)):
    if t[i] == node_three:
        TreeSum(node_three)
    elif t[i] == node_two:
        TreeSum(node_two)
    elif t[i] == node_one:
        TreeSum(node_one)
    elif t[i] == None:
        pass
    else:
        sum += t[i]
return sum

TreeSum(node_four) # This should return 18