非递归按层次遍历二叉树
2012-10-13 22:36
387 查看
//非递归按层次遍历二叉树
算法思想:按层次遍历需要一个队列,开始将二叉树的头结点入队,
然后每次从队列中删除一个节点并输出节点信息,接下来把它的非空
左右孩子入队,下一个输出的位它的右面堂兄弟或兄弟节点信息,在把它的
左右孩子入队,这两个孩子在上面两个孩子的后面(紧跟其后)
这样当队列为空时算法结束
注意:要声明全局变量数组与front 和 rear
void lever_oder(bitree* t)
{
bitree* p;
bitree* delete_queue();
void enter_queue(t);
if(t != NULL)
{
enter_queue();
while(front != rear)
{
p = delete_queue();
printf("%d\t",p->data);
if(p->lchild != NULL)
enter_queue(p->lchild);
if(p->rchild != NULL)
enter_queue(p->rchild);
}
}
}
void enter_queue(bitree* t)
{
if(front != (rear+1)%max)
{
rear = (rear+1)%max;
queue[rear] = t;
}
}
void delete_queue()
{
if(front == rear)return NULL;
front = (front + 1)%max;
return queue[front];
}
相关文章推荐
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 层次遍历二叉树的方法(递归,队列,指针)
- 二叉树先序后序递归建立,前中后序层次非递归遍历,以及统计叶子结点个数以及树的深度
- 用递归方法对二叉树进行层次遍历
- 数据结构二叉树——建立二叉树、中序递归遍历、非递归遍历、层次遍历
- 实现二叉树的先序遍历、中序遍历、后序遍历的递归非递归算法以及层次遍历算法
- 【基础备忘】二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 数据结构 —— 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 用递归方法对二叉树进行层次遍历
- 数据结构——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树的递归遍历,非递归遍历,层次遍历.
- C语言二叉树常见操作详解【前序,中序,后序,层次遍历及非递归查找,统计个数,比较,求深度】
- 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- [二叉树专题]:广度优先:按层次遍历二叉树的非递归实现||使用队列实现层次遍历二叉树
- 二叉树的递归遍历以及层次遍历
- 二叉树的中序遍历、递归实现、非递归实现、层次遍历、二叉树的应用,来来来,都有都有
- 二叉树递归求高度,非递归求高度,层次遍历
- 非递归二叉树层次遍历算法
- 二叉树非递归层次遍历
- 二叉树的建立&&前中后遍历(递归实现)&&层次遍历