我怎样才能找到树中的最小值?

How can i find smallest value in a tree?

def Find_Min(tree,smallest):
    if tree == []:  return smallest
    elif tree != []:
        if smallest > tree[0]: smallest = tree[0]
        Find_Min(tree[1],smallest)
        Find_Min(tree[2],smallest)

def main():
    array = [1, [0, [222,[],[]], [4,[],[]] ], [-6, [99,[],[]], []]]
    print("Smallest element in list: " + str(Find_Min(array,array[0])))

if __name__ == '__main__':
    main()

return None.

我哪里做错了? 我期待 -6

当您将树元素的访问与最小发现分开时,这会变得更容易。如果您需要它,它还使创建 find_max 函数变得超级容易:-)。这里有一些代码可以为您指明正确的方向...

def visit(tree):
    for elem in tree:
        if isinstance(elem, list):
           for subelem in visit(elem):  # yield_from visit(elem) on python3.3+
               yield subelem
        else:
           yield elem 

现在找到最小值就像在访问的元素上使用 min 函数一样简单:

def find_min(tree):
    return min(visit(tree))