此函数位于二叉树类
中/***********************
*
* give preorder of tree
*
* ********************/
void preorder(Node * node, std::ostream &p_str){
if(node != NULL){
//p_str << node->Data() << " ";
if(node->m_ll) {
preorder(node->m_ll, &p_str);
}
if(node->m_rl) {
preorder(node->m_rl, &p_str);
}
}
}
在课堂外打电话。从root
开始以递归方式遍历树void preorder(Node * node, std::ostream &p_str){
if(node != NULL){
//p_str << node->Data() << " ";
if(node->m_ll) {
preorder(node->m_ll, &p_str);
}
if(node->m_rl) {
preorder(node->m_rl, &p_str);
}
}
}
我遇到了像
这样的错误Tree.h:337: error: no matching function for call to 'CTree<int>::preorder(CTree<int>::Node*&, std::ostream*)'
Tree.h:330: note: candidates are: void CTree<T>::preorder(CTree<T>::Node*, std::ostream&) [with T = int]
Tree.h:343: error: no matching function for call to 'CTree<int>::preorder(CTree<int>::Node*&, std::ostream*)'
Tree.h:330: note: candidates are: void CTree<T>::preorder(CTree<T>::Node*, std::ostream&) [with T = int]
任何关于我忽略的相当简单的事情的想法?
答案 0 :(得分:0)
您无需传递地址ostream
对象。该函数采用引用,而不是指针:
preorder(node->m_rl, p_str);
答案 1 :(得分:0)
您的函数需要引用参数,但&p_str
是指针。
只需致电preorder(node->m_ll, p_str);
。
答案 2 :(得分:0)
preorder(node->m_ll, &p_str);
应为preorder(node->m_ll, p_str);