回 帖 发 新 帖 刷新版面

主题:请问问题出在哪

#include<iostream>
using namespace std;
//二叉树结点
static int count = 0;
template<class T>
struct BinaryTreeNode
{
        T data;
        BinaryTreeNode<T> * leftChild;
        BinaryTreeNode<T> * rightChild;
};
//二叉树,递归法
template<class T>
class BinaryTree
{
    public:
        BinaryTree(){root = NULL;}
        BinaryTree(BinaryTreeNode<T> * root){Create(root);}
        ~BinaryTree(){Release(root);}
        //递归前序遍历
        void PreOrder(void (*Operate)(BinaryTreeNode<T>* root),BinaryTreeNode<T> *root);
        //递归建立树
        void Create(BinaryTreeNode<T> * root);
        //递归删除树
        void Release(BinaryTreeNode<T>* root);
        BinaryTreeNode<T> * root;
        //static int count;
};
//前序递归构造树
template<class T>
void BinaryTree<T>::Create(BinaryTreeNode<T>* root)
{
    char ch;
    cin>>ch;
    if(ch == '#')
    {
        root =NULL;
    }
    else
    {
        root = new BinaryTreeNode<T>;
        root->data =ch;

        Create(root->leftChild);
        Create(root->rightChild);    
    }

}
template<class T>
void Operate(BinaryTreeNode<T>* root) 
{
    if(root->leftChild ==NULL && root->rightChild ==NULL)
    {
        count++;
    }
}
template<class T>
void BinaryTree<T>::PreOrder(void (*Operate)(BinaryTreeNode<T>* root),BinaryTreeNode<T> *root)
{
    if(root)
    {
        Operate(root);
        PreOrder(Operate,root->leftChild );
        PreOrder(Operate,root->rightChild );
    }
}
template<class T>
void BinaryTree<T>::Release(BinaryTreeNode<T>* root)
{
        
}
template<class T>
void Output(BinaryTreeNode<T>* root)
{
    cout<<root->data;
}
int main()
{
        BinaryTreeNode<char> *root= new BinaryTreeNode<char>;
    BinaryTree<char> b_Tree(root);
    b_Tree.PreOrder (Output,root);
    cout<<count<<endl;
    return 0;
}

回复列表 (共5个回复)

沙发

请下次提问的时候务必说清问题在哪里,不然光看一个程序第一感觉是不想给你提供帮助的,提问的技巧决定了你能得到的答案的准确性哦

编译器给你的提示不是已经很明确了么,count缺少声明

板凳

上面定义了

3 楼

这里应该是作用域的问题

4 楼

由于你用了using namespace,于是全局变量的作用域限定于std内,而你实际程序位于你的模板类里,一个解决的方法就是去掉using,在所有的cout cin endl前面加上std::

5 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

我来回复

您尚未登录,请登录后再回复。点此登录或注册