Назад к задачам
Junior — Senior
4

Нахождение ближайшего общего предка в иерархии экранов

Компании, где спрашивали:

ЯндексЯндекс
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо реализовать вспомогательную функцию firstCommonParent, которая принимает два узла‑экрана, расположенных в общей иерархии, и возвращает их ближайшего общего предка. Функция используется в механизме роутинга: сначала происходит откат (pop) до найденного предка, а затем переход (push) к целевому экрану.

class Screen(
    var parent: Screen? = null,
    var children: List<Screen> = emptyList()
)

fun firstCommonParent(nodeA: Screen, nodeB: Screen): Screen? {
    ...
}

Примеры вызовов:

  • firstCommonParent(C, H)A
  • firstCommonParent(C, G)D
  • firstCommonParent(H, D)D
  • firstCommonParent(G, F)A
  • firstCommonParent(C, L)null