Учитывая структуру, подобную следующей:
graph = {
# c1 is root node, graph is directed, c1 is source/root node
'c1': ['c2', 'c3'],
'c2': ['c4']
}
c1
/\
/ \
c2 c3
/
/
c4
Каким будет алгоритм общего назначения, чтобы найти все листья на графе? Моя первая мысль была:
# values in the 'from' section, that don't have a 'to' entry
set(itertools.chain(*graph.values())) - set(graph.keys())
# {'c3', 'c4'}
Это правильный способ сделать это? Каковы будут другие подходы, чтобы определить, является ли лист листом или нет?