问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构编程,单链表,链栈,队列,二叉树。

发布网友 发布时间:2022-04-23 07:48

我来回答

1个回答

热心网友 时间:2022-04-23 09:18

#include <iostream>                //二叉树层次遍历
using namespace std; 
struct BNode                       //二叉树结点 
{
 char data;
 BNode* lch;
 BNode* rch;
};
struct QNode                      //队列结点 
{
 BNode* data;                    
 QNode* link;
};
class LQue                        //链队列 
{
 private:
  QNode* Head;
  QNode* Tail;
 public:
  LQue();
  int  QueEmp();             //判空? 
  void EnQue(BNode* x);      //进
  void DeQue(BNode** x);              //出
   
};
LQue:: LQue()
{
 Head=new QNode;
 //Head->link=NULL;
 Tail=Head;
}
int  LQue::QueEmp()             //判空? 
{
 if(Head->link==NULL)
  return 1;
 else
  return 0 ;
}
void LQue::EnQue(BNode* x)      //进
{
 QNode* p=new QNode;
 p->data=x;
 p->link=NULL;                
 Tail->link=p;
 Tail=p;
}
void LQue::DeQue(BNode** x)      //出
{
 if(!QueEmp())
 {
  QNode* p=Head->link;
  *x=p->data;
  Head->link=p->link;
  if(p==Tail)
   Tail=Head;          //只有这种情况需要改变Tail 
  delete p;
 } 
}
class BiTree                       //二叉树
{
 private:
  BNode* T;                 //根指针 
 public:
  BiTree();
  void Create(BNode** T);             //先序 
  void InOrder(BNode* T);            //中序 
  void PostOrder(BNode* T);          //后序 
  void LvlOrder();                   //层次 ,需要队列函数支持Que(),QueEmp(),EnQue()进,DeQue()出
};
BiTree::BiTree()
{
 T=NULL;
 cout<<"请输入数据(#),以创建二叉树..."<<endl;
 Create(&T);
 cout<<"中序遍历二叉树..."<<endl;
 InOrder(T);
 cout<<endl<<"后序遍历二叉树..."<<endl;
 PostOrder(T);
 cout<<endl<<"层次遍历二叉树..."<<endl;
 LvlOrder();
}
void BiTree::Create(BNode** T)            //先序 
{
 char da;              //数据类型必须和BNode中对应
 cin>>da; 
 if(da=='#') 
  *T=NULL; 
 else 
 { 
  *T=new BNode;
  (*T)->data=da;
  //cout<<endl; 
  Create(&(*T)->lch);     //调用加&
  Create(&(*T)->rch); 
 }  
}
void BiTree::InOrder(BNode* T)

 if(T) 
 {  
  InOrder(T->lch);  
  cout<<T->data;  
  InOrder(T->rch); 
 }
}
void BiTree::PostOrder(BNode* T)

 if(T) 
 {  
  PostOrder(T->lch);  
  PostOrder(T->rch);  
  cout<<T->data; 
 }
}
void BiTree::LvlOrder()
{
 LQue q;
 BNode* a;
 if(T)
 {
  q.EnQue(T);
  while(!q.QueEmp())
  {
   q.DeQue(&a);            //返回值赋值给a 
   cout<<a->data;
   if(a->lch!=NULL)
    q.EnQue(a->lch);
   if(a->rch!=NULL)
    q.EnQue(a->rch);
  }
  cout<<endl;
 }
}
int main(int argc, char** argv)  
{
 BiTree T;
 return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 腰疼做什么运动比较好,没有腰椎间盘突出那么严重,就是今年天天坐办公室坐的,感觉腰明显没有那么好了 富掌柜有哪些功能,是否一定要购买终端? 云象扫码终端,是不是扫了公司就知道 银盛支付的智能扫码终端有几种类型啊?哪种适合用在酒店使用呢,我们酒店正准备采购呢。 建行扫码终端是什么 关于工程评价 铃声多多里面人唱好歌录上面的在那 小米怎么双开 qq飞车怎么看好友情侣的亲密度? qq飞车亲密度 QQ飞车恩爱度在哪里显示?怎么个人信息里只有亲密度,没有恩爱度啊?怎么查看自己的恩爱度? 木工椭圆的画法视频 qq飞车中怎么查看与好友的亲密度 已知椭圆尺寸怎么画?视频 椭圆画法视频 飞车怎么看亲密度的! 中山地通智能科技有限公司怎么样? 中山市恒壹智能科技有限公司怎么样? 中山市西区集体资产经营有限公司怎么样? 中山唐森科技有限公司怎么样? 对方打电话说是金融公司的我想查询这个号码是不是金融公司、谢谢! Mac air 如何更改管理员头像 我想换成自己照片 我记得以前是可以的啊! 苹果电脑mac的用户名改了,照片全没了,输入法快捷键也变了 在县城开了家厨卫店,寻求好听的店名,希望好心人帮忙给点意见,有什么好听合适的店名,请说明名字的寓意 macbook air 10.7.2 怎么改登录界面的图片 两个,一个公开 另一个怎么隐藏 请问PS的这个菜单页面可以怎样缩小呀?笔记本电脑用着看着太大了 桌面上有两个,怎么才把另一个藏起来呀? 华为手机怎样隐藏? 微信怎么隐藏不让好友看到 油豆腐的做法,娃娃菜煮油豆腐怎么做好吃 能上两个微信吗?能隐藏一个吗 如何强行解除QQ登陆限制,我的密保,密保手机啥都没有 &#65532;C语言数据结构,请问队列,栈,线性链表,串这四种数据结构用什么实现?除结构体数组还有哪些 windows微信聊天记录没有备份,百度,知乎只有问,没有答? 笔记本电脑win10系统在线全屏看视频时任务栏不消失,这该怎么解决?任 数据结构,栈与队列问题,求补充代码,以便可以运行,感谢? 身份证开头是532911是哪里的 身份证号码53293是什么地方 5329是什么意思