2012-11-16 5 views
0

각 후속 단계마다 들여 쓰기 (3 공백)가있는 이진 트리를 선주문 인쇄하는 방법은 어떻습니까? 이 시점에서 필자는 도우미 메서드를 사용하여 반복적으로 트리를 인쇄하고 있지만 들여 쓰기 코딩 방법을 잘 모릅니다.선주문 인쇄 들여 쓰기가있는 이진수 트리

public void print() { 
     printPreorder(root); 
     System.out.println(); 
} 

private void printPreorder(BinaryTreenode<E> node) { 
     System.out.println(node.getData() + " "); 
     if (node.getLeft() != null) { 
      printPreorder(node.getRight()); 
     } 
     if (node.getRight() != null) { 
      printPreorder(node.getRight()); 
     } 
} 

내 즉각적인 생각은 카운터에 넣어이었고,이 방법은 재귀 적으로 호출 될 때마다 증가가 있고, 각 증가에 대한 다음 들여 쓰기 세 공간,하지만 난 : 이것은 내가 지금까지 무엇을 가지고 이 작업을 수행하는 가장 좋은 방법인지 확신하지 못합니다.

+1

첫 번째 사항부터 시작합니다. 첫 번째 재귀 호출을 확인하십시오. 당신은 잘못된 지점을 부르고 있습니다. – Grambot

답변

1

당신은 올바른 방향으로 가고있었습니다. 일반적인 의사 코드는 다음과 같습니다.

void print(node) { 
    print(node, "") 
} 

private void print(node, indent) { 
    if(node is null) return 
    output(indent + node.data) 
    print(node.left, indent + " ") 
    print(node.right, indent + " ") 
} 
+0

죄송합니다/편집 : 메소드 이름과'System.out.println'의 별칭으로'print'를 사용 했으므로 대신'output'으로 변경했습니다. – Dylan

+0

감사! 이것은 많은 도움이되었습니다! –

+0

좋아요! 이것이 내 문제를 해결하는 데 도움이된다면 나의 대답을 받아 들일 수 있다고 생각해보십시오! – Dylan