2015-11-26 3 views
-2

Я написал этот класс:метод Python «подсчитывать листья»

class TNode(object): 
    def __init__(self, name): 
     self.name=name 
     self._children=[] 
    def add(self, c): 
     self._children.append(c) 
    def name(self): 
     return self.name 
    def children(self): 
     t=[] 
     for f in self._children: 
      t+=[f] 
     return t 
    def count(self, *ciao): 
     cnt = 1 
     for node in self._children: 
      cnt += node.count() 
     return cnt 
    def count_by_name(self, name): 
     cbn=1 
     for node in self._children: 
      if node.name == name: 
       cbn += node.count() 
     return cbn 

Теперь мне нужен способ, чтобы сосчитать листья дерева. Как я могу написать этот метод?

+0

Вы пробовали с помощью Google? Для этой точной проблемы существует множество известных алгоритмов. – OhadM

+0

да я пытаюсь, но нет ничего, что могло бы мне помочь –

ответ

0

попробовать это:

def leafcounter(node): 
    if isinstance(node, dict): 
     return sum([leafcounter(node[n]) for n in node]) 
    else: 
     return 1 
    leafcounter(tree) 
Смежные вопросы