getVerticalPathBetweenNodes method
Возвращает путь между двумя вершинами внутри одной "ветки".
При отсутствии общего родителя возвращается пустой путь.
Implementation
@override
Set<Node> getVerticalPathBetweenNodes(
Node first,
Node second, {
Map<String, int>? depths,
}) {
final result = <Node>{};
// Находим LCA
final commonAncestor = findLowestCommonAncestor(first, second);
if (commonAncestor == null) return {};
// Добавляем путь от first до LCA
var current = first;
while (current != commonAncestor) {
result.add(current);
final parent = getNodeParent(current);
if (parent == null) return {};
current = parent;
}
// Добавляем LCA
result.add(commonAncestor);
// Добавляем путь от second до LCA
current = second;
while (current != commonAncestor) {
result.add(current);
final parent = getNodeParent(current);
if (parent == null) return {};
current = parent;
}
return result;
}