2016-04-04 9 views
2

辞書や再帰を使ってPythonでBST(バイナリ検索ツリー)を実装しているノードの値を更新しようとしています。しかし、それは動作していません。私を教えてください!バイナリ検索ツリーでデータを更新する

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

視覚的に次のようになります:

はここでPythonで辞書を使用して、私のBSTの実装です

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