Skip to main content
 首页 » 编程设计

python之在 Python 中搜索二叉搜索树的两边

2025年05月04日19lyhabc

我有一个 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 一样。