getVerticalPathBetweenNodes method

  1. @override
Set<Node> getVerticalPathBetweenNodes(
  1. Node first,
  2. Node second, {
  3. Map<String, int>? depths,
})
override

Возвращает путь между двумя вершинами внутри одной "ветки".

При отсутствии общего родителя возвращается пустой путь.

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;
}