2015-03-23 3 views
0

Так как у меня есть эта проблема, и я понятия не имею, как это сделать вообще. Проблема заключается в следующем:Вычитание ветвей двоичного дерева чисел в python

Определите рекурсивную функцию под названием 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]) 

но должно быть что-то не так в моем еще заявление, потому что независимо от того, что я вход будет возвращать только 0 или 1.

ответ

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 вычитания друг от друга.

Смежные вопросы