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

C语言 数据结构 二叉树参差遍历程序错误

发布网友 发布时间:2022-07-19 11:42

我来回答

2个回答

热心网友 时间:2023-10-15 23:45

//#include <cstdlib>
//#include <iostream>

#include<stdio.h>
#include<malloc.h>
typedef int DataType;/*元素的数据类型*/
typedef struct node
{
DataType data;
struct node *lchild,*rchild;
}BitTNode,*BiTree;
typedef struct Lnode
{
BitTNode* data;
struct Lnode *next;
}linklist;
typedef struct
{
linklist *front,*rear;
}linkqueue;
linkqueue *q;
void InitQueue(linkqueue *q)//生成空链队
{
q->front = (linklist *)malloc(sizeof(linklist));
q->front->next = NULL;
q->rear = q->front;
}
int QueueEmpty(linkqueue *q)//判断空
{
if(q->front==q->rear)
return 1;
else
return 0;
}
void InQueue(linkqueue *q,BitTNode* x)//将X插入到队尾
{
q->rear->next=(linklist *)malloc(sizeof(linklist));
q->rear->next->data=x;
q->rear=q->rear->next;
q->rear->next=NULL;
}
BitTNode* DeQueue(linkqueue *q)//删除队头元素并返回该元素的值
{
linklist *s;BitTNode* e;
if(QueueEmpty(q)) return NULL;
s=q->front->next;e=s->data;
if(s==q->rear)q->front=q->rear;//如果只有一个结点,出队后队列为空
else q->front->next=s->next;
free(s);
return e;
}
BitTNode * creat()
{
BitTNode *t;
DataType x;
scanf("%d",&x);
if(x==0) t=NULL;
else
{
t=(BitTNode *)malloc(sizeof(BitTNode));
t->data=x;
t->lchild=creat();
t->rchild=creat();
}
return(t);
}/*creat*/
/*. 层次遍历二叉树的非递归算法*/
void levelorder(BitTNode* root)
{
if(root==NULL)return ;
else{
linklist* rear;
BitTNode* p;
//SqQueue queue;
p=root;
InitQueue(q);

//initQueue(&queue); //创建一个队列
InQueue(q,p);
//EnQueue(&queue,p); //将根结点入队
while(QueueEmpty(q)!=1) //当队列不为空时
{
//记下每一层开始时队尾的位置(即每一层遍历的终止位置)
rear=q->rear;
while(q->front!=rear) //每一次循环遍历一层
{
//p=OutQueue(&queue); //出队
p=DeQueue(q);
printf("%3d",p->data); //输出数据
if(p->lchild!=NULL) //将该结点的结点入队
//EnQueue(&queue,p->lchild);
InQueue(q,p->lchild);
if(p->rchild!=NULL)
//EnQueue(&queue,p->rchild);
InQueue(q,p->rchild);
}
}
}
}

main()

{

BitTNode* root;

root=creat();

printf("\n层次顺序遍历二叉树");

levelorder(root);

system("pause");

}

热心网友 时间:2023-10-15 23:46

http://blog.csdn.net/huangsir2011/article/details/8121077
http://blog.csdn.net/huangsir2011/article/details/8108522
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
折儿是什么意思? 什么叫饭折? 饭折是什么意思 私募股权基金6种模式 私募投资业务管理系统 火山仙泉天然矿泉水产品特点 用苏打片带吃带洗真的能生男孩吗 凡山天然苏打水怎么样 美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 二叉树的遍历及其应用? 这是我做的关于二叉树的遍历 需要用到先序递归非递归 后序递归非递归 层序 谁能帮我纠错或者补充。。谢谢了 幼儿园做区角布置时需要注意什么? 《新世界》田丹对小红袄的推断是不是自相矛盾? 被吴京一手捧红的女星侯梦莎,不穿军装的她出奇的美,你知道有多漂亮吗... 一个长得特别漂亮女人,穿的有点像洛丽塔,而且戴着小圆帽,是个GIF黑白动图。应该是上世纪电影剪辑的 在淘宝网上看到很多的古钱币,想知道产地在哪里 网上那些卖筒子古币的哪里拿货 古币商人如何进货 古钱币评级币货源从哪进货 经常吃什么食物是健胃和助于消化的 经常吃什么食物会增强我们自身的免疫力? 南昌昌北机场到南昌大学前湖校区(1号门)怎么走 南昌青山湖区到南昌大学前湖校区的乘车路线怎么走? 请问南昌大学前湖校区怎么走啊? 如果你是某公司的业务员,对外进行贸易往来,如何签订合同。假设合同规定以L&#47;C方式付款,简述流程并解释 从南昌火车站到南昌大学前湖校区坐几路公交能到?详细点 南昌大学(东湖校区)到南昌大学(前湖校区)怎么走 从南昌火车站到南昌大学前湖校区可以坐哪几路公交车? 南昌站到南昌大学(前湖校区)怎么走 已知二叉树的前序和中序遍历,如何输出后序遍历?求代码 上海迈古知识产权代理有限公司怎么样? 上海迈古网络科技有限公司怎么样? 迈古贸易(上海)有限公司中山市分公司怎么样? 雅宝热水器50升报价表 茶文化的形成演变 华为手机为什么一下载分身就范病 cross, across与through的区别 芬驰水管是不是上市公司 为民除害下一句是什么 小猫被鱼刺卡到的现象,小猫被鱼刺卡住会是什么状态 ...一下拨了一条羊和猪出来,然后蛇变成人了,这是什么预兆? 文科专科就业前景好的专业 重庆3月份穿什么衣服? 手机号和都不用了,如何找回健康通行码? come on.stick toit.change.happy这是什么意思 stick to it是什么意思? if you hold a belief and stick to it,you will eventually achieve your dream,这是什么意思 密码遗失我的一个QQ号密码忘记了,请问怎样才能百分之百申诉回来?高手进 梦见有人推车撵住我的脚还和我吵