您的位置:首页 > 其它

非递归按层次遍历二叉树

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];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐