我尝试创建一个函数来将二进制搜索树中叶节点(没有子节点的节点)中的数据更改为" 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;当没有子节点时。实现这一目标的最佳途径是什么?提前谢谢。
答案 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'