如何在树中找到最小值?

时间:2015-04-27 18:09:55

标签: python tree find traversal

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()

返回None

我在哪里做错了什么? 我期待-6

1 个答案:

答案 0 :(得分:3)

当您从最小查找中分离出树元素的访问时,这变得更容易。如果您需要它,它还可以非常轻松地创建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))