Назад к задачам
ЯндексПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
4
Нахождение ближайшего общего предка в иерархии экранов
Компании, где спрашивали:
Условие задачи
Необходимо реализовать вспомогательную функцию firstCommonParent, которая принимает два узла‑экрана, расположенных в общей иерархии, и возвращает их ближайшего общего предка. Функция используется в механизме роутинга: сначала происходит откат (pop) до найденного предка, а затем переход (push) к целевому экрану.
class Screen(
var parent: Screen? = null,
var children: List<Screen> = emptyList()
)
fun firstCommonParent(nodeA: Screen, nodeB: Screen): Screen? {
...
}
Примеры вызовов:
firstCommonParent(C, H)→AfirstCommonParent(C, G)→DfirstCommonParent(H, D)→DfirstCommonParent(G, F)→AfirstCommonParent(C, L)→null