2013-04-02 3 views
0

모든 요소를 ​​오름차순으로 인쇄하는 재귀 함수가있는 이진 검색 트리 클래스를 작성했습니다.이진 트리 탐색 끝에 단일 행을 추가하는 방법 C++

template <typename T> 
void BST<T>::printInOrder(BSTNode *t) const 
{ 
    if(t == NULL){ 
     return; 
    } 
    printInOrder(t->left); 
    cout << t->element << " "; 
    printInOrder(t-> right); 
    cout << "\n"; // this is not correct 
} 

나는 가장 큰 값을 읽을되면 정확히 하나의 새로운 라인을 추가하려합니다. 어떻게해야합니까? 현재 상태에서이 함수는 n 개의 새로운 행을 인쇄합니다. 여기서 n은 트리의 노드 수입니다.

참고 : 이것은 함수 내에서 개행을 호출하고 함수 자체를 재귀 적으로 지정하는 프로젝트를위한 것입니다.

+0

_ "가장 큰 가치는 ** 읽기 **"_ - 서면을 의미합니까? –

답변

1
  • 줄 바꿈이
  • 기능은 재귀

홀수 요구 될 수 있지만이 접근 방식이며, 주어진해야하는 함수 내에서 추가 :

template <typename T> 
void BST<T>::printInOrder(BSTNode *t, bool addNewline) const 
{ 
    if(t == NULL){ 
     return; 
    } 
    printInOrder(t->left, false); 
    cout << t->element << " "; 
    printInOrder(t-> right, false); 
    if(addNewLine) 
     cout << "\n"; 
} 

// ...somewhere else... 
bst.printInOrder(node, true); 

하지만 실제로는 두 가지를 사용한다 함수를 추가하거나 직접 개행을 추가하십시오.

bst.printInOrder(node); 
cout << "\n"; 
+0

어쩌면 그렇지만 여전히 좋은 해결책입니다. 도와 주셔서 감사합니다! – Loourr