ich diese Daten aus einer JSON-Export empfange:Wie durchläuft ein Diagramm, in dem ein Knoten mehrere Eltern hat und Werte summiert?
nodes = [
{id:1,data:29,parentOf:[]},
{id:2,data:31,parentOf:[1,8,7]},
{id:3,data:41,parentOf:[2,1]},
{id:4,data:89,parentOf:[3,2,1]},
{id:5,data:71,parentOf:[4,3,2,1,9,2,8,7]},
{id:6,data:11,parentOf:[5,4,3,2,1]},
{id:7,data:59,parentOf:[]},
{id:8,data:43,parentOf:[7]},
{id:9,data:97,parentOf:[2,8,7]}
]
Dies ist eine Datenstruktur aus einem Diagramm, in dem ein ein Knoten null oder mehr Eltern haben können. Das Diagramm wurde für den Export in das Knoten Array abgeflacht. Jetzt muss ich die Werte der Daten Feld aggregieren.
Wie kann ich diesen Graphen durchlaufen, um die Gesamtsumme der Daten für jeden Knoten zu erhalten?
EDIT: das endgültige Ergebnis für das Beispiel ist wie folgt vorgesehen sein:
[
{id:1,sum:29},
{id:2,sum:162}, // 31+102+29
{id:3,sum:203}, // 41+162
{id:4,sum:292}, // 89+203
{id:5,sum:622}, // 71+292+259
{id:6,sum:633}, // 11+622
{id:7,sum:59},
{id:8,sum:102}, // 43+59
{id:9,sum:259} // 97+162
]
EDIT 2: Dies ist eine Zeichnung der graphischen Darstellung von der Datenstruktur führt oben, die von mir:
Ich sehe jetzt, in der parentOf Array der Knoten, gibt es einige redundante Informationen.
Trotz der Tatsache, dass das angegebene Beispiel nur Knoten ohne Eltern (id: 6) hat, suche ich eine Lösung für den Normalfall, wo die Knoten ohne Eltern mehr als eins sind. Also denke ich, dass der Graph Traversal von den Blattknoten beginnen sollte, d.h. id: 1 und id: 7.
Ein nicht-rekursive Ansatz (wenn möglich) würde sehr geschätzt werden.
Die Herausforderung dabei ist, nicht in der Berechnung der Summen, aber zu interpretieren, was überflüssig ist und was nicht. – trincot
Warum hat Knoten mit ID '3'' [2,1] 'unter seinen Kindern (nur linker Zweig von 2) und 9 hat das Recht' [2,8,7] '? – destoryer