Часто требуется не просто подсчитать веса кратчайших путей, но и найти сами эти пути. Пусть G = (V, E) - заданный граф. Для каждой вершины  будем помнить её предшественника
 будем помнить её предшественника  . Предшественик вершины - это либо другая вершина, либо NIL. По завершении работы алгоритмов цепочка предшественников, начинающаяся с произвольной вершины v, будет представлять собой кратчайший путь из s в v, так что, если
. Предшественик вершины - это либо другая вершина, либо NIL. По завершении работы алгоритмов цепочка предшественников, начинающаяся с произвольной вершины v, будет представлять собой кратчайший путь из s в v, так что, если  ≠ NIL, процедура Print-Path (G,s,v) напечатает кратчайший путь из s в v.
 ≠ NIL, процедура Print-Path (G,s,v) напечатает кратчайший путь из s в v.
До завершения работы алгоритмов цепочки, получаемые итерациями π, не обязательно будут кратчайшими путями, но всё равно можно рассмотреть ориентированный подграф предшествования Gπ = (Vπ, E π), определенный так: вершины Gπ - это те вершины G, у которых предшественник отличен от NIL, плюс исходная вершина:
Vπ = {v  V: π [ v ] ≠ NIL}
 V: π [ v ] ≠ NIL}  { s }
 { s }
. Рёбра G π - это стрелки, указывающие из π [ v ] ≠ NIL в v:
Eπ = {(π [ v ], v)  E: v
 E: v  Vπ \ {s}}
 Vπ \ {s}}
.
Дерево кратчайших путей с корнем в s есть ориентированный подграф G´ = (V´, E´),
где V ´  V и E ´
 V и E ´  E, для которого:
 E, для которого:
- V ´ - множество вершин, достижимых из вершины s,
- G ´ является деревом с корнем s,
- для каждого v  V ´ путь из s в v в графе G ´ является кратчайшим путем из s в v в графе G. V ´ путь из s в v в графе G ´ является кратчайшим путем из s в v в графе G.






