我有一个 python 中的 BST,每个节点保存 3 条数据。这些数据是 ID、Mark 和 Name。
我想做的是搜索名称,但节点是基于 ID 的,这就是我搜索的方式。该函数应该输出特定名称的 ID。
def findName(tree,name):
if tree==None:
return None
elif tree['name']==name:
return tree['id']
if tree['left']!=None:
return findName(tree['left'],name)
if tree['right']!=None:
return findName(tree['right'],name)
不幸的是,我只会搜索树的左侧,而不是右侧,如果我先搜索右侧,情况正好相反。
我如何在两边搜索这个?
请您参考如下方法:
如果你还没有完成,你不应该return!相反,您可以将最后 4 行替换为单个短路 或 :
return findName(tree['left'], name) or findName(tree['right'], name)
不过,请确保您的 ID 不包含 0,否则此方法将失败,因为 0 是一个虚假值,就像 None 一样。
