二叉树的层序遍历

/*二叉树的层序遍历*/
typedef struct TreeNode *BinTree;
typedef BinTree Position;
struct TreeNode{
          ElementType Data;
          BinTree Left;
          BinTree Right;
};

/*
   二叉树遍历的核心问题:二维结构的线性化
   访问左儿子后,右儿子结点的处理:
    ·需要一个存储 结构保存暂时不访问的结点
    ·存储结构:堆栈、队列 
*/ 

/*队列实现:遍历从根结点开始,首先将根结点入队,然后开始执行循环:结点出队,访问该结点,其左右儿子入队*/ 
void LevelOrderTraversal(BinTree BT)
{
    Queue Q;
    BinTree T;
    if(!BT) return; //若是空树则直接返h回 
    Q=CreatQueue(MaxSize); //创建并初始化队列Q 
    AddQ(Q,BT);
    while(!IsEmptyQ(Q)) {
        T=DeleteQ(Q);
        printf("%5d",T->Data); //访问取出队列结点 
        if(T->Left) AddQ(Q,T->Left);
        if(T->Right) AddQ(Q,T->Right); 
    }
 } 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值