Не срабатывает обычное добавление элемента в множество

Разбираюсь в учебном примере, но не догоняю в чем дело (((

Есть функция get_child

import random

def get_child(node):
    return random.randint(0, node)

с помощью неё рекурсивно наполняем множество

   def tree(parent):
    child = get_child(parent)
    if child == 0:
        return {child}
    else:
        full_tree = tree(child)
        return full_tree.union({parent})

например выводим print(tree(700)), все работает.

Но если использовать более напрашивающийся full_tree.add(parent) вместо full_tree.union({parent}), то будет выходить ошибка. Чем код снизу так плох в сравнении с кодом выше ?

def tree(parent):
    child = get_child(parent)
    if child == 0:
        return {child}
    else:
        full_tree = tree(child)
        return full_tree.add(parent)

Ошибка: AttributeError: 'NoneType' object has no attribute 'add'


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

Автор решения: CrazyElf

Просто метод add ничего не возвращает, в отличие от union.

Замените:

    return full_tree.add(parent)

На:

    full_tree.add(parent)
    return full_tree

Ругаться уже не будет. Но правильность работы алгоритма в целом я не проверял.

→ Ссылка