在 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 相互减去的值。
所以就像我遇到了这个问题,我完全不知道该怎么做。问题是这样的:
定义一个名为 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 相互减去的值。