给出一个图,从指定的节点(例如橙色)开始,如何获得最低的叶子节点(例如绿色)?
它不是二进制文件,因此一个节点可以有数百个子节点。不保证孩子的价值比父母低。
有没有比仅遍历每个分支更好的方法了?如果没有,那么我们可以将所有叶子收集到一个集合中以找到价值最低的叶子。
不幸的是,这会非常昂贵。
答案 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
是树中的节点数。
这也是最简单的方法,其他方法会更复杂,因此更容易出错。