核心思想,是用队列作为辅助数据结构实现。


队列的初始化,入队,出队的操作是关键
初始时:将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竟然

本文介绍了一种使用队列实现二叉树层次遍历的方法。核心思想是通过队列来辅助实现节点的逐层访问。首先将根节点入队,然后依次取出队列中的节点并打印其值,同时将其非空的左右子节点入队,直至队列为空。
127

被折叠的 条评论
为什么被折叠?



