2016-08-13 1 views
1

Heres ist mein Code für eine rekursive Post-Order-Traversal in JavaScript mit einem JSON-Baum.Allgemeine Baumpfosten-Reihenfolge Traversal

Wie würde ich diesen Code anpassen, um N Kinder in einem Knoten zu behandeln?

+0

Haben Sie versucht, etwas wie 'für (Kind in root.children) postOrder (root.children [Kind])'? – Tibrogargan

+0

@Tribrotargan trotzig funktioniert! Vielen Dank! aber ich denke, ich bevorzuge das "forEach" wie unten vorgeschlagen :) –

+0

Ich auch. Mein Gehirn erwartet Javascript '' für .. in' Konstrukt, um das gleiche wie in anderen Sprachen zu arbeiten, denn jeder ist sauberer. – Tibrogargan

Antwort

0

Dies sollte tun, was Sie wollen: Ersetzen Sie einfach Ihre Anrufe postOrder mit root.children.forEach(postOrder);.

var tree = { 
 
    "name" : "root", 
 
    "children" : [ 
 
    { 
 
     "name" : "first child", 
 
     "children" : [ 
 
     { 
 
      "name" : "first child of first", 
 
      "children" : [] 
 
     }, 
 
     { 
 
      "name" : "second child of first", 
 
      "children" : [] 
 
     } 
 
     ] 
 
    }, 
 
    { 
 
     "name" : "second child", 
 
     "children" : [] 
 
    } 
 
    ] 
 
} 
 

 
function postOrder(root) { 
 
    if (root == null) return; 
 

 
    root.children.forEach(postOrder); 
 

 
    console.log(root.name); 
 
} 
 

 
postOrder(tree);

ich auch die Zeile, die vor dem Aufruf der root Namen druckt bewegen würde, die die Kinder Namen rekursiv druckt, aber diese passen Fall Ihre Verwendung kann nicht.

+0

Perfekt !! Danke vielmals! Ich wusste, dass es iterativ zu diesem Zeitpunkt getan werden musste, aber meine Kenntnisse von Javascript sind im Moment arm, der forEach ist ein Trick, den ich in meinen Büchern behalten werde Danke! –

+0

Gern geschehen @WoodyBriggs –