在python中减去二进制数字树的分支

时间:2015-03-23 01:01:44

标签: python tree numbers binary-tree

所以就像我有这个问题一样,我根本不知道怎么做。问题是这样的:

定义一个名为subt_tree()的递归函数,它接受二进制数字树并递归地从左分支中减去每个右分支的值。例如,如果

tree1 = (25,((10,4),(12,11)))

然后subt_tree(tree1)将返回

  

(25 - ((10-4) - (12-11)))=(25 - (6 - 1))=(25 - 5)= 20.

所以基本上我必须将每个tuple变成一个减法问题然后解决。

我试过这个:

def subt_tree(bnt):
    """Takes a bnt and recursively subtracts the value of each right branch from the left branch.

    bnt -> number"""
    if not isinstance(bnt,tuple):
        return 1
    else:
        return subt_tree(bnt[0]) - subt_tree(bnt[1])

但是我的else语句肯定有问题,因为无论我输入什么,它都只会返回0或1。

1 个答案:

答案 0 :(得分:2)

而不是返回1为什么不返回值本身?这是你的递归的所有基本情况。

def subt_tree(bnt):
    if not isinstance(bnt,tuple):
        return bnt
    else:
        return subt_tree(bnt[0]) - subt_tree(bnt[1])

如果你返回1,你只会得到一组由1组相互减去的值。