2016-05-31 2 views
1

Я новичок в Javascript. Ниже у меня есть код, который использует метод обхода порядка, чтобы рекурсивно пройти мое дерево и распечатать результат с помощью 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

Нина, есть способ не использовать массив? Потому что мне нужно только вернуть результат в формате String. Спасибо =) – Clay

+0

Да, возможно, либо с строкой вместо массива в предложении 1, либо взять массив и использовать ['Array # join'] (https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Reference/Global_Objects/Array/join) в предложении 2. –

Смежные вопросы