Ich habe einen nTree (n-Dimensionen) und ich möchte die Anzahl der Knoten mit Datenpunkten in einer bestimmten Tiefe berechnen. Hier ist die Baumstruktur und die Funktion, die ich zu verwenden Ich versuche:Zählen der Anzahl der Knoten, die Daten auf einer bestimmten Ebene enthalten - nTree
class nTree:
def initialize(self, hypercube_coordinates, depth=0):
self.data = [] #holds the data - this tells if the node is empty or not
self.children = []
self.depth = depth
self.hypercube = hypercube #coordinates
#a bit inefficient since we are theoretically visiting each node
#can be optimized later
def count_nodes_at_level(self, depth):
count = 0
for child in self.children:
if child.depth == depth:
count += child.count_nodes_at_level(self.depth)
else:
child.count_nodes_at_level(depth)
return count
Ich bin mir bewusst, dass meine Methode ein wenig ineffizient ist, aber ich will es zunächst arbeiten, dann kann ich es optimieren. Ich habe einen anderen Beitrag zu diesem Thema gelesen und meine Methode ist sehr ähnlich zu der der anderen Beiträge, aber es funktioniert nicht für einen nTree. In meinem Fall habe ich 64 Kinder/Elternteil. Außerdem bin ich mir nicht sicher, ob die PreOrder-, PostOrder-, InOrder- oder BreadthFirst-Traversale funktionieren, da ich nicht auf ein linkes oder rechtes Unterkind verweisen kann. Irgendwelche Vorschläge zur Verbesserung/zum Funktionieren der Methode?