2016-04-04 6 views
2

Я пытаюсь обновить значения в узлах в реализации BST (двоичного дерева поиска) в Python, используя словари и рекурсию. Однако он не работает. Пожалуйста, просветите меня!Обновление данных в двоичном дереве поиска

Вот моя реализация BST с использованием словарей в Python:

tree = { 
    'right': None, 
    'data': [9124, 5.82, 5], 
    'left': { 
     'right': { 
      'right': None, 
      'data': [8298, 2.4, 6], 
      'left': None 
     }, 
     'data': [5549, 4.76, 5], 
     'left': None 
    } 
} 

, который визуально выглядит следующим образом:

Visual look of the above dictionary

Вот моя попытка увеличить и обновить среднее значение (цена) каждого список в «данных» на 10% с использованием рекурсии, но он не работает по какой-то причине, я не знаю о:

def IncreaseByTen(tree): 
    if tree == None: 
     return 0 

    price = tree['data'][1] 

    IncreaseByTen(tree['left']) 
    price += (price * 0.1) 
    IncreaseByTen(tree['right']) 

ответ

0

Следующая строка просто изменить только локальную переменную price, а не элемент списка:

price += (price * 0.1) 

Вам необходимо присвоить значение обратно к элементу списка:

price = tree['data'][1] 
... 
price += (price * 0.1) 
tree['data'][1] = price # <---- 

или вы можете использовать *=:

tree['data'][1] *= 1.1 
Смежные вопросы