ich versuche zu Datenstrukturen gut zu lernen und implementiert den folgenden Code für eine Depth-First-Traversal/Anwendung eines Rückrufes auf einem regelmäßigen Baum:Breiten erste Traversal eines Baum in Javascript
Tree.prototype.traverse = function (callback) {
callback(this.value);
if (!this.children) {
return;
}
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
child.traverse(callback);
}
};
Wie konnte Ich ändere das, um es stattdessen zuerst zu erweitern. Diese ist, was der Baum-Klasse wie folgt aussieht:
var Tree = function (value) {
var newTree = {};
newTree.value = value;
newTree.children = [];
extend(newTree, treeMethods);
return newTree;
};
Sie können die für die mit 'stack = stack.concat (n.children) ersetzen ' –
@AndrasSzell würde die Komplexität des Algorithmus von O (| V | + | E |) in O (| V |^2 + | E |) ändern, da concat() ein neues Array zuordnet. –
Array in JS ist im Grunde eine Hashtabelle, es gibt also keinen Unterschied in der Komplexität zwischen concat und push. –