当前位置:网站首页>C语言实现树的底层遍历--超简代码
C语言实现树的底层遍历--超简代码
2022-08-03 06:34:00 【干饭小白】
//对树进行底层遍历时使用了队列的结构
基础类型:
typedef enum {FALSE = 0,TRUE = 1} Bool;
typedef enum {VOERFLOW = -2,UNDERFLOW = -1, ERROR = 0,OK = 1} Status;
树的二叉链表结点定义:
typedef struct Node{
char data;
struct Node *firstchild,*nextbrother;
}Node,*TreeNode;
//实现队列基本操作的函数原型表
void InitQueue(Queue *Q); //初始化队列
Bool IsEmpty(Queue Q); //判断队列是否为空,若是则返回TRUE,否则返回FALSE
void EnQueue(Queue *Q,TreeNode p); //元素入队列
void DeQueue(Queue *Q,TreeNode *p); //元素出队列
//函数代码
Status LevelTraverser(TreeNode root)
{
/*层序遍历树,树采用孩子-兄弟表示法,root是树根结点的指针*/
Queue tmpQ;
TreeNode ptr,brotherptr;
if( !root )
return ERROR;
InitQueue(&tmpQ);
EnQueue(tmpQ,root);
brotherptr = root->nextbrother;
while(brotherptr)
{
EnQueue(&tmpQ,brotherptr);
brotherptr=brotherptr->nextbrother;
}
while(!IsEmpty(tmpQ))
{
DeQueue(&tmpQ,&ptr);
printf("%c\t",ptr->data);
if(!ptr->firstchild) continue;
EnQueue(&tmpQ,ptr->firstchild);
brotherptr =ptr->brotherptr->nextbrother;
while(brotherptr)
{
EnQueue(&tmpQ,brotherptr);
brotherptr = brotherptr->nextbrother;
}
}
return OK;
}
边栏推荐
- Nacos单机模式的安装与启动
- JS 原型原型链
- nacos-2.0.3启动报错出现no datasource set的坑
- 我国有关信息方面的法律法规
- Multi-Head-Attention principle and code implementation
- C语言入门实战(14):选择排序
- 【Shell】3万字图文讲解带你快速掌握shell脚本编程
- 第六章:存储系统
- El - tree to set focus on selected highlight highlighting, the selected node deepen background and change the font color, etc
- MySQL 流程控制
猜你喜欢
随机推荐
【卫朋】硬件创业:营销与开发同行
从学生到职场的转变
2022用户画像构建
【Shell】3万字图文讲解带你快速掌握shell脚本编程
信息学奥赛一本通T1449:魔板
开放域OOD主要数据集、评价指标汇总
第六章:存储系统
线程基础(二)
在线开启gtid偶发hang住的问题解决
学会可视化大屏布局技巧,让领导都赞不绝口
用代码构建UI界面
《多线程案例》阻塞队列、定时器、线程池、饿汉与懒汉模式
数据仓库指标体系实践
C语言实现通讯录功能(400行代码实现)
Flutter | 判断 Text 组件是否显示完
C语言入门实战(14):选择排序
MySQL忘记密码怎么办
信息学奥赛一本通T1454:山峰和山谷
商业智能BI业务分析思维:供应链分析 – 如何控制牛鞭效应(二)
数据库表结构文档 生成工具screw的使用