Я понятия не имею о "критических путях", но я предполагаю, что вы имеете в виду это .
Найти самый длинный путь в ациклическом графе с весами можно только путем обхода всего дерева и последующего сравнения длин, поскольку вы никогда не знаете, как взвешивается остальная часть дерева. Вы можете найти больше информации об обходе дерева в Википедии . Я предлагаю вам пройти предварительный заказ, поскольку это легко и просто осуществить.
Если вы собираетесь часто выполнять запросы, вы также можете увеличить ребра между узлами информацией о весе их поддеревьев при вставке. Это относительно дешево, в то время как повторный обход может быть чрезвычайно дорогим.
Но ничто действительно не спасет вас от полного обхода, если вы этого не сделаете. Порядок на самом деле не имеет значения, если вы делаете обход и никогда не идете по одному и тому же пути дважды.