c++ 树模板

自个写的,写的不好,见笑了

#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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值