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()
.