Jak uzyskać węzły liści drzewa za pomocą Pythona?

Cześć, jestem nowy w OOP, więc miej to na uwadze podczas czytania.

Mam prostą implementację drzewa Pythona (patrz poniższy kod).

class TreeNode(object):
    def __init__(self, data):
        self.data = data
        self.children = []

    def add_child(self, obj):
        self.children.append(obj)

class Tree:
    def __init__(self):
        self.root = TreeNode('ROOT')

    def preorder_trav(self, node):
        if node is not None:
            print node.data
            if len(node.children) == 0:
                print "("+ node.data + ")"
                for n in node.children:
                    self.preorder_trav(n)

if __name__ == '__main__':
    tr = Tree()
    n1 = tr.root
    n2 = TreeNode("B")
    n3 = TreeNode("C")
    n4 = TreeNode("D")
    n5 = TreeNode("E")
    n6 = TreeNode("F")

    n1.add_child(n2)
    n1.add_child(n3)
    n2.add_child(n4)
    n2.add_child(n5)
    n3.add_child(n6)

    tr.preorder_trav(n1)

Potrzebuję teraz wdrożenia metody przywracania węzłów liści. Pod pojęciemwęzeł liścia Mam na myśli węzeł, który nie ma dzieci.

Zastanawiam się, jak zrobićget_leaf_nodes () metoda.

Niektóre rozwiązania przychodzą mi do głowy

Robienie aself.leaf_nodes = [] w środku__init__ metoda. Dzięki temu wiem, że będzie to widoczne tylko dla tego wystąpienia drzewa.Dokonywanie członka klasyleaf_nodes = [] powyżej__init__ metoda. Dzięki temu wiem, że wszystkie instancje drzewa będą mogły zobaczyć listę leaf_nodes.

Powyższe rozwiązania spowodują, że utworzę listę leaf_nodes w mojej klasie, więcget_leaf_nodes() metoda może użyć. To, czego szukam, to mieć tylkoget_leaf_nodes() metoda, która wykona obliczenia na moim drzewie i zwróci listę.

Na przykład w C wywołalibyśmymalloc() a następnie możemy zwrócić wskaźnik do funkcji, która nazywa sięget_leaf_nodes().

questionAnswers(3)

yourAnswerToTheQuestion