2016-04-04 25 views
2

Ich versuche, Werte in Knoten in einer Implementierung eines BST (Binary Search Tree) in Python mithilfe von Wörterbüchern und Rekursion zu aktualisieren. Es funktioniert jedoch nicht. Bitte erleuchte mich!Aktualisieren von Daten in einem binären Suchbaum

Hier ist meine BST Implementierung Wörterbücher in 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 
    } 
} 

die visuell wie folgt aussieht:

Visual look of the above dictionary

Hier ist mein Versuch, den mittleren Wert (Preis) von jedem zu erhöhen und zu aktualisieren Liste in 'Daten' um 10% unter Verwendung der Rekursion, aber es funktioniert nicht aus irgendeinem Grund, den ich nicht kenne:

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

    price = tree['data'][1] 

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

Antwort

0

folgende Zeile nur nur die lokale Variable price, ändert nicht das Listenelement:

price += (price * 0.1) 

Sie müssen den Wert wieder auf das Listenelement zuzuordnen:

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

oder können Sie *= verwenden:

tree['data'][1] *= 1.1 
Verwandte Themen