中易网

关于树的创建和前序遍历的问题C++

答案:2  悬赏:60  
解决时间 2021-03-12 04:41
希望朋友们帮忙解决下前序遍历中问题所在,帮忙解释下噶~谢谢啦
#include
using namespace std;
#define _false 1
#define _true 0
class tree
{
//tree *ntree;
tree *left;
tree *right;
char data;
public:
int create(tree* &t) //创建树
{
//cout<<"请输入需要存储的信息:"< //data=getchar();
char ch;
cin>>ch;
if(ch=='#')
t=NULL; //表示空子树
else
{
tree *t=new tree;
if(!t) exit(1) ;
t->data=ch;
create(t->left);
create(t->right);
}

return 0;

}
void pre_travel(tree* &t)
{
if(t)
{
cout<data;
pre_travel(t->left);
pre_travel(t->right);
}
}

};
void main()
{
cout<<"请输入需要存储的信息:"< tree y;
tree *t;
y.create(t);
cout<<"前序遍历"< y.pre_travel(t);
}
最佳答案
create函数里面
else
{
tree *t=new tree; //把前面的tree *去掉,否则是又定义一个局部变量t了。
全部回答
void dlr(binarytree *p) //前序遍历递归算法 {     if(p!=null)     {         cout<<p->data<<endl;         dlr(p->lchild);         dlr(p->rchild);     } }void dlr(binarytree *p) //前序遍历非递归算法 {     stack<binarytree> *s;    //定义堆栈s     binarytree *p=root;    //指向根节点     while(p!=null || !s.empty())         {         while(p!=null)         {             cout<<p->data<<endl;             s.push(p);             p=p->lchild;         }         if(!s.empty())         {             p=s.top();             s.pop();             p=p->rchild;         }     } }void lrd(binarytree *p) //后序遍历递归算法 {     if(p!=null)     {         lrd(p->lchild);         lrd(p->rchild);         cout<<p->data<<endl;     } }void lrd(binarytree *p)  //后序遍历非递归算法 {     stack<binarytree> *s;    //定义堆栈s     binarytree *current=p;    //当前节点     binarytree *pre=null;    //前一节点     while(current!=null || !s.empty())     {         while(current!=null)         {             s.push(current);             current=current->lchild;          }          current=s.top();          if(current->rchild==null || current->rchild==pre)          {              cout<<current->data<<endl;              pre=current;              s.pop();              current=null;          }          else current=current->rchild;      } }void leveltrace(binarytree *p) //层次遍历 {     queue<binarytree> *q;    //定义队列q     binarytree *t=p;         if(visit(t))  q.push(t)    //visit()代表已被遍历过     while(!q.empty())     {         t=q.front();         q.pop();         if(visit(t->lchild))             q.push(t->lchild);         if(visit(t->rchild))             q.push(t->rchild);     } }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我在外地判缓刑想回老家当地镇法庭报到可以吗
vivox6隔空手势功能
商丘市梁园区烟草专卖局这个地址在什么地方,
死人越来越多坟地怎么够用
3DS用GW烧录卡在SD卡里的存档能不能转移到另
今天我的红米note全开四核了 然后 我不能卸载
中国电信的账单,怎样可以用手机退这个功能
天玺地下停车场怎么去啊,有知道地址的么
福师大闽南科技学院的教育技术(数字媒体制作
为什么鱼头汤煮出来是白色的?
急!急!急!网站突然打不开了,查看空间使用出
主角有只骷髅叫小黑,是什么小说
三棵树公园地址有知道的么?有点事想过去
杯具!!!易建联又把韦德,保罗,罗斯等人给
录像和电影的区别
推荐资讯
山东邦腾信息科技有限公司地址在哪,我要去那
时代KTV在哪里啊,我有事要去这个地方
请推荐一家好的贵阳理发店(美发店、发廊)
做健身教练是不是真的很好?如何能够当上
郭钟杰牙科地址在哪,我要去那里办事
谁有歌手阳子资料?
才子礼品文具地址有知道的么?有点事想过去
1号电池多少钱一个?
王二美发店这个地址在什么地方,我要处理点事
堕胎后真心忏悔过要怎么做才算行善?
一样的内存条,电脑插4条会不会比插两条快,
长岛的渔家乐哪家比较好?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?