Ich bin auf der Suche nach einer Datenstruktur, die im Grunde ein Baum von Karten ist, wo die Karte an jedem Knoten einige neue Elemente sowie die Elemente in den übergeordneten Knoten enthält Karte. Mit Karte meine ich eine Programmierkarte mit Schlüsseln und Werten, wie map in der STL oder dict in python.Was ist eine optimale Datenstruktur für einen Baum von Karten?
Zum Beispiel könnte es ein Wurzelknoten sein:
root = {'car':1, 'boat':2}
und 2 Kinder, die jeweils das Hinzufügen eines Elements an die Mutterkarte
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
Meine Suche wird dann auf den Knoten durchgeführt werden. So gibt beispielsweise child1 ['jet'] 35 zurück, aber root ['jet'] gibt einen nicht gefundenen Fehler zurück.
Ich möchte, dass dies so platzsparend wie möglich ist, dh ich möchte keine vollständige Kopie der resultierenden Karte an jedem Knoten speichern, aber im Idealfall wäre die Suche immer noch O (log N), N ist die Gesamtzahl der Elemente am Knoten, nicht der gesamte Baum.
Ich dachte vielleicht gibt es eine intelligente Hash-Funktion, die ich dafür verwenden könnte, aber konnte nichts finden.
Der naive Ansatz wäre, die neu hinzugefügten Einträge in einer Karte an jedem Knoten zu speichern und dann nach oben zu gehen, wenn nichts gefunden wird. Ich mag das nicht, weil es von der Baumtiefe abhängt.
erweitert werden kann, verstehe ich nicht, ich brauche nicht noch einen hashmap w ie alle Einträge für die Knoten? – phreeza