C语言实现树的底层遍历--超简代码

简介: C语言实现树的底层遍历--超简代码
//对树进行底层遍历时使用了队列的结构
基础类型:
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;
}
相关文章
|
10天前
|
机器学习/深度学习 C语言 Windows
C语言的管理系统代码
C语言学生宿舍管理系统代码
|
8天前
|
算法 编译器 C语言
猜数字游戏C语言代码实现
猜数字游戏C语言代码实现
|
10天前
|
自然语言处理 Ubuntu 编译器
|
10天前
|
存储 机器学习/深度学习 编译器
C语言代码学习笔记
<编程精粹:编写高质量C语言代码> 读书笔记
|
10天前
|
JavaScript C语言
|
8天前
|
存储 安全 Serverless
扫雷游戏C语言代码实现——万字长文超详细,手把手教你实现,新手也能学会
扫雷游戏C语言代码实现——万字长文超详细,手把手教你实现,新手也能学会
|
9天前
|
C语言
C语言练习代码第一篇
C语言练习代码第一篇
|
10天前
|
C语言 图形学 C++
|
6天前
|
C语言
C语言实现猜数字游戏:代码详解与函数解析
C语言实现猜数字游戏:代码详解与函数解析
7 0
|
6天前
|
存储 C语言
详细解读AVL树(查找、插入、删除)——C语言
详细解读AVL树(查找、插入、删除)——C语言