夏末薄荷 2022-05-29 17:04 采纳率: 91.7%
浏览 28
已结题

谁能完整的非常详细的解释层序遍历那一段代码

//层次顺序遍历二叉树
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MaxSize 128

// 定义二叉树
typedef struct Node
{
char data; // 数据元素
struct Node* lchild; // 指向左节点
struct Node* rchild; // 指向右节点
}BiNode; // struct Node 的别名
typedef BiNode* BiTree;

// 定义顺序队
typedef struct Queue
{
int front; // 队头指针(实际上不是指针,是一个标签)
int rear; // 队尾指针(实际上不是指针,是一个标签)
BiNode* data[MaxSize]; // 存放队中元素(保存指针的数组)
}SqQueue; // struct Queue 的别名

//创建二叉树
BiTree CreateTree()
{
BiTree T;
char x=getchar();
if(x=='#') return T=NULL;
if(x=='\n') return T;
else
{
T=(BiTree)malloc(sizeof(BiNode));
T->data=x;
T->lchild=CreateTree();
T->rchild=CreateTree();
return T;
}
}

//层序遍历
void LeverOrder(BiTree T)
{
BiNode q= NULL; //创建临时指针q,移动它,来访问输出节点
SqQueue
Q; //定义队列 Q
Q=(SqQueue*)malloc(sizeof(SqQueue)); //给Q获取(创建)地址
Q->front=Q->rear=-1;
if(T==NULL) return;
Q->data[++Q->rear]=T;
while(Q->front!=Q->rear)
{
q=Q->data[++Q->front];
printf("%c",q->data);
if (q->lchild != NULL) Q->data[++Q->rear]=q->lchild;
if (q->rchild != NULL) Q->data[++Q->rear]=q->rchild;
}
}

int main()
{
BiTree T;
T=CreateTree();
LeverOrder(T);
return 0;
}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-05-30 08:57
    关注

    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    不要依赖调试器输出复杂数据结构!而要将复杂数据结构的整个内容在处理它的每一步使用一小段代码按自己很容易理解的格式输出,非常有助于调试!或者可以说是“基础设施”

    数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月30日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)