二叉树的层次遍历方法

来源:互联网 发布:nginx 源码 编辑:程序博客网 时间:2024/05/23 00:34


由于层次遍历需要从上到下,从左到右的顺序按照层次进行遍历,那么每个节点只能访问一次,需要解决的问题是在访问同一层次后面的节点时,如何保证可以再访问前面节点的子节点。

这边可以用队列来实现。

先贴具体实现

void traversal() {queue <BinaryTree *> q;q.push(Bt.root());while (!q.empty()) {BinaryTree *temp = q.front();cout << temp->value << endl;if (temp->left) q.push(temp->left);if (temp->right)q.push(temp->right);<pre name="code" class="cpp">                q.pop();
  }}

首先把根节点压入队列

在队列不为空的情况下,用一个二叉树指针指向队列第一个元素,访问此节点,并且将其左右子树压入队列。

队列弹出第一个元素

0 0
原创粉丝点击