2013-04-02 29 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