2014-11-06 4 views
0

inorder 메서드에서 값을 가져온 다음 텍스트 파일에 저장해야합니다. 다음 코드에서 어떻게 구현할 수 있습니까? 반환 값을 사용하여 System.out.println 대신 텍스트 파일에 저장하기 위해 다른 write 메서드에 값을 반환하면 다음 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

트리에 요소가 두 개 이상있는 경우 완전히 반복됩니다. 가장 왼쪽으로 이동하여 System으로 인쇄 한 다음 오른쪽으로 이동 한 다음 재귀 적으로 다시 왼쪽으로 이동합니다. 단순히 첫 번째 요소 인쇄를 계속합니다. – CharlieS

+0

@CharlieS : 아니요, 그렇지 않습니다. 재귀 호출에서 왼쪽 (또는 오른쪽)으로 이동하면 트리 아래로 더 멀리 이동합니다. –

+0

그것은 왼쪽으로 돌아가는 모든 과정을 반복하고, 가장 왼쪽에있는 요소를 출력합니다. 그 다음에 오른쪽으로 돌아 간다. 재진입은 그것을 좌로 잡는다. 첫 번째 요소를 다시 인쇄 한 다음 오른쪽으로갑니다. 다시 들어가서 왼쪽으로 간다. 첫 번째 요소를 인쇄 한 다음 오른쪽으로 이동하고 다시 들어갑니다. ad infinitum – CharlieS

답변

1

그런 다음 반환 될 수있는 전체 목록, 문자열을 얻을 수있는 루트 값으로 각 재귀 호출의 결과를 연결할 수 있습니다.

+0

이것은 가능한 방법 일 수 있습니다. –

+0

방금 ​​변경 사항을 게시했습니다. 이 방법을 의미 했습니까? @Scott –

+0

재귀 호출에서 반환되는 항목으로 무언가를 수행해야합니다. 그리고 선언문에 변수를 추가 할 수 없습니다. –