如何遍历树以找到最小值

时间:2019-04-10 07:32:10

标签: algorithm tree traversal

给出一个图,从指定的节点(例如橙色)开始,如何获得最低的叶子节点(例如绿色)?

它不是二进制文件,因此一个节点可以有数百个子节点。不保证孩子的价值比父母低。

有没有比仅遍历每个分支更好的方法了?如果没有,那么我们可以将所有叶子收集到一个集合中以找到价值最低的叶子。

不幸的是,这会非常昂贵。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果树上没有特定属性,则遍历树是执行此类操作的方法。
此伪代码描述了一种可能的方法:

find_min(node):
    result = node.value
    for each child of node:
        child_min = find_min(child)
        if child_min < result:
            result = child_min
    return result

但是最终,您将必须遍历树上的所有分支。那是因为要找到最小值,您必须遍历树的所有节点,然后遍历它。在一般情况下,没有更快的方法,因为该方法在O(n)中运行,其中n是树中的节点数。
这也是最简单的方法,其他方法会更复杂,因此更容易出错。