0

这个函数在二叉树类里面

/***********************
 *
* 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);
            }
    }
 }

这在课外打了电话。递归遍历树,从根开始

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]

对我忽略的相当简单的事情有任何想法吗?

4

3 回答 3

0

您不需要传递地址ostream对象。该函数正在获取引用,而不是指针:

preorder(node->m_rl, p_str);
于 2013-02-16T00:48:48.973 回答
0

您的函数需要引用参数,但&p_str它是一个指针。

只需调用preorder(node->m_ll, p_str);.

于 2013-02-16T00:48:48.983 回答
0

preorder(node->m_ll, &p_str);应该preorder(node->m_ll, p_str);

于 2013-02-16T00:49:15.283 回答