2016-04-04 29 views
2

Sözlüklerde ve yineleme kullanarak Python'da bir BST (Binary Search Tree) uygulamasında düğümlerdeki değerleri güncelleştirmeye çalışıyorum. Ancak, çalışmıyor. Lütfen beni aydınlat!İkili Arama Ağacında verileri güncelleştirme

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 
    } 
} 

görsel şuna benzer:

İşte Python sözlükleri kullanarak BST uygulaması var

Visual look of the above dictionary

İşte her orta değerini (fiyat) artırmak ve güncellemek için benim girişimi var 'data' içinde listelenen 10% recursion kullanarak henüz bilmiyorum bazı nedenlerle çalışmıyor:

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

    price = tree['data'][1] 

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

cevap

0

Takip edilenler hat sadece sadece yerel değişkeni price değiştirmek değil, liste öğesi: Sen liste öğesine geri değer atamanız gerekir

price += (price * 0.1) 

:

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

veya *= kullanabilirsiniz:

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