2016-05-31 60 views
1

我是JavaScript新手。下面我有一個代碼,它使用inorder遍歷方法遞歸遍歷我的樹並使用document.write打印結果。我的問題是不打印結果,我只是想返回結果供進一步使用。我該怎麼做?返回樹中的遍歷結果

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

謝謝你的幫助。十分讚賞=)

回答

0

你可以使用一個陣列,用於結果

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; 
} 

另一個解決方案是一個參數在陣列添加到函數,並收集結果。

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

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

對於結果爲一個字符串

function getAllNodes(node) { 

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

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

謝謝你,尼娜。今天學了一個新課程=) – Clay

+0

Nina,有沒有辦法不使用數組?因爲我只需要以String格式返回結果。謝謝=) – Clay

+0

是的,可以用字符串代替提案1中的數組,或者使用數組並使用['Array#join'](https://developer.mozilla.org/en-US/) docs/Web/JavaScript/Reference/Global_Objects/Array/join)在提案2中。 –