Python BST,更改叶节点的数据

时间:2016-08-10 16:39:23

标签: python binary-search-tree

我尝试创建一个函数来将二进制搜索树中叶节点(没有子节点的节点)中的数据更改为" Leif"。目前我有我的BST代码:

def add(tree, value, name):
    if tree == None:
        return {'data':value, 'data1':name, 'left':None, 'right':None}
    elif value < tree['data']:
        tree['left'] = add(tree['left'],value,name)
        return tree
    elif value > tree['data']:
        tree['right'] = add(tree['right'],value,name)
        return tree
    else: # value == tree['data']
        return tree # ignore duplicate

基本上,我想创建一个函数,将data1中的名称更改为&#34; Leif&#34;当没有子节点时。实现这一目标的最佳途径是什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

将问题分解为较小的问题,可以通过简单的功能解决。

from itertools import ifilter


def is_leaf(tree):
    return tree['left'] is None and tree['right'] is None


def traverse(tree):
    if tree is not None:
        yield tree
        for side in ['left', 'right']:
            for child in traverse(tree[side]):
                yield child


def set_data1_in_leafes_to_leif(tree):
    for leaf in ifilter(is_leaf, traverse(tree)):
        leaf['data1'] = 'Leif'
相关问题