Как с рекурсией вернуть общий корень двух древ (древо не двоичное)?

Существует класс дерева(не двоичное), но с одной особенностью. У каждого есть своё 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
        """

Ответы (0 шт):