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

Unk*_*own 1 python binary-search-tree

我有一个Python BST,每个节点保存3条数据。这些数据是 ID、标记和名称。

我想做的是搜索名称,但节点是基于 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) 
Run Code Online (Sandbox Code Playgroud)

不幸的是,我只会搜索树的左侧,而不是右侧,如果我先搜索右侧,则相反。

我该如何搜索双方呢?

Nik*_* B. 5

return如果你还没有完成,你不应该这样做!相反,您可以用单个短路替换最后 4 行or

return findName(tree['left'], name) or findName(tree['right'], name)
Run Code Online (Sandbox Code Playgroud)

不过,请确保您的 ID 不包含0,否则此方法将失败,因为0是一个虚假值,就像 None 一样。