核心思想,是用队列作为辅助数据结构实现。
队列的初始化,入队,出队的操作是关键
初始时:将root指针入队(root != NULL,否则直接返回)
每次从队列里取出队头元素,打印,并将其左右子树(若不为NULL)入队
若队列为空,则遍历结束
队列数据结构:
队列空和队列满的判断
这是在牺牲一个元素的存储空间下,队列空和队列满的判断条件
核心代码和上一篇博客非常类似,只是辅助数据结构由栈变为队列
int TreePrint_level(BTree root)
{
if(!root)
return 0;
struct queue *q;
initQueue(q);
enQueue(q,root);
struct node *pNode;
while(!isQueueEmpty(q))
{
deQueue(q,pNode);
printf("%d ",pNode->data);
if(pNode->left) enQueue(q,pNode->left);
if(pNode->right) enQueue(q,pNode->right);
}
}、
OVER!!!
有点牛逼了,代码一气呵成,没有bug竟然