二叉搜索树的预先排序,错误,不确定是什么错误

时间:2013-02-16 00:46:49

标签: c++ binary-search-tree

此函数位于二叉树类

/***********************
 *
* 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]

任何关于我忽略的相当简单的事情的想法?

3 个答案:

答案 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);