我有一棵树。 给出了两个顶点a,b作为输入,我们需要打印它们之间的路径。 一种方法是从a找到所有路径并打印以b结尾的路径,有没有更好的解决方案?
答案 0 :(得分:1)
让您的两个节点为A, B
。
简单的解决方案是将其视为任何Path finding problem,并忽略图形的tree属性。在这种情况下,BFS或Bi Directional BFS比查找所有路径并在O(|V|)
中找到最短路径要有效得多。
通过这种方法,您可以从A
/ B
运行BFS,或者从两者运行双向BFS,以获得最短路径。
更复杂的技术包括将树视为根,然后首先可以在树中找到A
和B
中的Lowest Common Ancestor。设为S
。然后,最短的路径就是A->...->S->...->B
。
这可以在O(h)
时间完成,其中h
是树的高度。