自个写的,写的不好,见笑了
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("a.txt");
template <class T>
class tree
{
struct node
{
T data;
struct node*lchild,*rchild;
}*t;
void creatree(struct node**t);
void pre(struct node*t);
void creatree(struct node**t,char**ch);
public:
tree(){t=NULL;}
void create( );//从文件中读取,如:a.txt中abd.e..fg...c..
void create(T ch[]);//以数组的形式赋值
void preorder( );
};
template <class T>
void tree<T>::creatree(struct node**t)
{
T ch;
in>>ch;
if(ch=='.')*t=NULL;
else
{
(*t)=new node;
(*t)->data=ch;
creatree(&((*t)->lchild));
creatree(&((*t)->rchild));
}
}
template <class T>
void tree<T>::creatree(struct node**t,char**ch)
{
if(**ch=='.'){*t=NULL;*ch=*ch+1;}
else
{
(*t)=new node;
(*t)->data=**ch;
*ch=*ch+1;
creatree(&(*t)->lchild,ch);
creatree(&(*t)->rchild,ch);
}
}
template <class T>
void tree<T>::create(T ch[])
{
creatree(&t, &ch);
}
template <class T>
void tree<T>::create()
{
creatree(&t);
}
template<class T>
void tree<T>::pre(struct node*t)
{
if(t)
{
cout<<t->data<<" ";
pre(t->lchild);
pre(t->rchild);
}
}
template<class T>
void tree<T>::preorder()
{
pre(t);
cout<<endl;
}
int main()
{
tree<char >t;
char* ch="abd.e..fg...c..";
t.create(ch);
t.preorder();
return 0;
}