二叉树的层次遍历

https://blog.csdn.net/ns_code/article/details/13169703

   二叉树的层序遍历算法给漏掉了,实际上也不能说漏掉了,毕竟层序遍历的实现方法与这三种遍历的实现方法有所不同,因此单独拿出来分析比较合适。

    二叉树的层序遍历的实现还是比较简单的,由于其层级的关系,很明显要用到队列来辅助实现,主要是从左向右,自上而下,依次将二叉树的各节点入队,这样便可以保证输出的顺序是层序排列的。下面是算法的实现思想:

    先将树的根节点入队,

    如果队列不空,则进入循环

    {

      将队首元素出队,并输出它;

      如果该队首元素有左孩子,则将其左孩子入队;

      如果该队首元素有右孩子,则将其右孩子入队

    }

    C语言代码如下:

[cpp]  view plain  copy
  1. void LevelOrderTraverse(BiTree T,Status(*Visit)(TElemType))  
  2. {  
  3.     //Visit是对节点操作的应用函数,  
  4.     //在这里,对每个数据元素调用函数Visit,也即是遍历了该节点     
  5.     SqQueue q;  
  6.     QElemType p;  
  7.     if(T)  
  8.     {  
  9.         InitQueue(&q);  
  10.         EnQueue(&q,T);  
  11.         while(!QueueEmpty(q))  
  12.         {  
  13.             DeQueue(&q,&p);  
  14.             Visit(p->data);  
  15.             if(p->lchild!=NULL) EnQueue(&q,p->lchild);  
  16.             if(p->rchild!=NULL) EnQueue(&q,p->rchild);  
  17.         }  
  18.         printf("/n");  
  19.     }  
  20. }  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值