更新二进制搜索树中的数据

时间:2016-04-04 06:12:20

标签: python binary-search-tree traversal

我正在尝试使用字典和递归更新Python中BST(二进制搜索树)实现中的节点中的值。但是,它不起作用。请赐教!

这是我在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
    }
}

在视觉上看起来像这样:

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'])

1 个答案:

答案 0 :(得分:0)

以下行只更改本地变量price,而不是列表项:

price += (price * 0.1)

您需要将值分配回列表项:

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

或者您可以使用*=

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