2016-05-31 3 views
1

Ich bin neu in Javascript. Unten habe ich einen Code, der die inorder traversal-Methode verwendet, um rekursiv meinen Baum zu traversieren und das Ergebnis mit document.write zu drucken. Meine Frage ist, anstatt das Ergebnis zu drucken, ich möchte nur das Ergebnis zur weiteren Verwendung zurückgeben. Wie kann ich es tun?Rückgabe eines Baums Inorder Traversal Ergebnisse

function inOrder(node) { 
    if (!(node == null)) { 
     inOrder(node.left); 
     document.write(node.toString()); 
     inOrder(node.right); 
    } 
} 

Vielen Dank für Ihre Hilfe. Sehr geschätzt =)

Antwort

0

Sie könnten ein Array für das Ergebnis verwenden

function getAllNodes(node) { 

    function inOrder(node) { 
     if (node) { 
      inOrder(node.left); 
      result.push(node.toString()); // push instead of output. 
      inOrder(node.right); 
     } 
    } 

    var result = []; 
    inOrder(node); 
    return result; 
} 

Eine andere Lösung ist es, einen Parameter an die Funktion zu addieren und das Ergebnis in einem Array zu sammeln.

function inOrder(node, result) { 
    if (node) { 
     inOrder(node.left, result); 
     result.push(node.toString()); 
     inOrder(node.right, result); 
    } 
} 

var result = []; 
inOrder(node, result); 

Für Ergebnis als String

function getAllNodes(node) { 

    function inOrder(node) { 
     if (node) { 
      inOrder(node.left); 
      result += node.toString() + ', '; 
      inOrder(node.right); 
     } 
    } 

    var result = ''; 
    inOrder(node); 
    return result; 
} 
+1

Danke, Nina. Habe heute eine neue Lektion gelernt =) – Clay

+0

Nina, gibt es eine Möglichkeit, ein Array nicht zu benutzen? Weil ich das Ergebnis nur im String-Format ausgeben muss. Danke =) – Clay

+0

Ja, es ist möglich, entweder mit einem String anstelle eines Arrays in Vorschlag 1 oder nehmen Sie das Array und verwenden Sie ['Array # Join'] (https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Referenz/Global_Objects/Array/Join) in Vorschlag 2. –