Как с рекурсией вернуть общий корень двух древ (древо не двоичное)?
Существует класс дерева(не двоичное), но с одной особенностью. У каждого есть своё id.
Как с помощью рекурсии вернуть ближайшее общее материнское дерево в методе closest_node? В функции closest_node нужно найти его с помощью id в виде аргумента.
Например,у древ T6 И T1 ближайшее общее материнское древо это T2. У древ T2 и T3 ближайшее общее материнское древо это T3. У древ T4 и T5 ближайшее общее материнское древо это T3.
class Tree:
_id: int
_main: Optional[IdTree]
_nodes: List[IdTree]
def __init__(self, id:int) -> None:
self._main = None
self._nodes= []
def add_node(self, node: IdTree) -> None:
"""Добавьте нижние древо в список <self._nodes> и поставьте <self> главным древом <node>.
"""
self._nodes.append(node)
node._main = self
def closest_node(self, id: int) -> Tree:
"""Верните ближайшее общее материнское древо с помощью рекурсии.
>>> t1 = Tree(1)
>>> t2 = Tree(2)
>>> t3 = Tree(3)
>>> t4 = Tree(4)
>>> t5 = Tree(5)
>>> t2.add_node(t1)
>>> t3.add_node(t2)
>>> t3.add_node(t4)
>>> t4.add_node(t5)
>>> t3.closest_node(1)
>>> t3
>>> t3.closest_node(3)
>>> t3
>>> t1.closest_node(5)
>>> t3
"""
