层序遍历
使用层序建树进行建树
层序遍历代码思路
借助一个辅助队列。
- 先将二叉树的根结点入队,
 - 然后出队,访问出队结点, 
  
- 若它有左子树,则将左子树根节点入队;
 - 若它有右子树,则将右子树根节点入队。
 - 然后出队,
 - 访问出队结点……如此反复,直到队列为空
 
 
// biTree——树的结构体指针,seQueue——辅助队列的结构体指针
// qElemType,辅助队列中存储的元素类型,这里为树结点的指针
void levelOrder(biTree t) {
   
   
    seQueue seq;
    qElemType e;
    initQueue(seq);
    // 根节点入队
    enQueue(seq, t);
	// 辅助队列为空时结束循环
    while (seq->front != seq->rear) {
   
   
        // 结点出队
        deQueue(seq, e);
        // 访问结点
        cout << e->data << ' ';
        // 若有左子树,左子树根节点入队
        if (e->lChild != NULL) enQueue(seq, e->lChild);
        // 若有右子树,右子树根节点入队
        if (e->rChild != NULL) enQueue(seq, e->rChild);
    }
    cout << endl;
}
 
实现过程
根据上面的代码思路,需要实现两个数据结构,一个二叉树,一个队列,需要实现的功能有
- 二叉树、队列的数据结构定义
 - 二叉树的创建、队列的初始化
 - 二叉树的层序遍历、队列的出队、入队操作
 
实现结果&完整代码

/**
 * 树的层序建树和层序遍历
 */
#include <iostream>
using 
                
C++实现二叉树的层序遍历与构建
        
                  
                  
                  
                  
最低0.47元/天 解锁文章
                          
                      
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2031
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            