二叉树的按层遍历
常见的前序、中序、后序都很常见,最近用到了按层遍历,记录一下:
思路:用一个队列来作为辅助空间。依次存储头结点,左节点和右节点。每次循环输出节点的值,直到队列为空这样一来就利用了队列先进先出的性质实现了非递归按层遍历二叉树。
具体实现:
void levelOrderTraverse(const BiTree& t) { queue<BiTree> q; BiTree p = NULL; if(t) { q.push(t); } while(!q.empty()) { p = q.front(); q.pop(); cout<<p->data<<" "; if(p->lchild)//左孩子不空,入队列 { q.push(p->lchild); } if(p->rchild)//右孩子不空,入队列 { q.push(p->rchild); } } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。