2014-11-06 3 views
0

Я должен получить значения из метода inorder, а затем сохранить их в текстовом файле. Как я могу достичь этого в следующем коде? Если я использую return для возврата значений другому методу записи для хранения в текстовом файле вместо System.out.println, он не перейдет к следующему утверждению root.getRight(). Любая помощь?Возвращаемое значение из метода двоичного дерева inorder

private String inorder(TreeNode root) { 

     if(root.getLeft()!=null){ 
      inorder(root.getLeft()); 
     } 

     stringConcatenation += root.getData()); 

     if(root.getRight()!=null){ 
      inorder(root.getRight()); 
     } 

     return stringConcatenation; 
    } // end of inorder() 
+0

Это будет цикл навсегда, если в дереве содержится более одного элемента. Он будет перемещаться влево, распечатывать его в Системе, затем идти вправо, а затем рекурсивно идти влево. Он просто сохранит печать первого элемента. – CharlieS

+0

@CharlieS: Нет, не будет; когда он идет слева (или справа) в рекурсивном вызове, он идет дальше по дереву. –

+0

он возвращает все пути до нуля, затем печатает то, что находится в самом левом элементе. затем идет направо и повторно. повторное включение берет его. он снова печатает первый элемент, затем идет правильно. затем возвращается и уходит. печатает первый элемент, затем переходит вправо и повторно. ad infinitum – CharlieS

ответ

1

Вы могли бы объединить результаты от каждого рекурсивного вызова с корневым значением, чтобы получить строку с целым списком, который затем может быть возвращен.

+0

Это может быть осуществимым способом. –

+0

Я только что опубликовал изменение. Вы имели в виду этот путь? @Scott –

+0

Вам нужно что-то сделать с тем, что возвращается из ваших рекурсивных вызовов. И вы не можете добавить к переменной в ее декларации. –

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

  • Нет связанных вопросов^_^