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

Subtracting branches of a Binary Number Tree in python

所以就像我遇到了这个问题,我完全不知道该怎么做。问题是这样的:

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

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

然后 subt_tree(tree1) 会 return

( 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 语句中肯定有问题,因为无论我输入什么,它都只会 return 0 或 1。

而不是 returning 1 你为什么不 return 值本身?毕竟这是递归的基本情况。

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

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