二叉树按层次遍历cpp
时间: 2024-12-25 07:30:58 浏览: 16
二叉树按层次遍历(也称为广度优先遍历)是一种遍历二叉树的方法,它按照树的层次从左到右,从上到下进行遍历。在C++中,可以使用队列来实现这种遍历方法。
下面是一个使用C++实现的二叉树按层次遍历的示例代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) return;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int levelSize = q.size();
for (int i = 0; i < levelSize; i++) {
TreeNode* node = q.front();
q.pop();
cout << node->val << " ";
if (node->left != NULL) q.push(node->left);
if (node->right != NULL) q.push(node->right);
}
cout << endl; // 换行,开始新的一行遍历
}
}
```
在这个示例代码中,我们定义了一个`TreeNode`结构体来表示二叉树的节点。`levelOrderTraversal`函数是按层次遍历的实现,它使用一个队列来存储当前层的节点。首先将根节点入队,然后在队列不为空的情况下,不断取出队列中的节点,访问它们的值,并将它们的子节点(如果存在)入队。最后,在遍历完一层的所有节点后,输出换行符以开始新的一行遍历。
使用示例:
```cpp
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
levelOrderTraversal(root); // 输出: 1 2 3 4 5 6 7
```
输出结果为:1 2 3 4 5 6 7 ,表示按层次遍历了二叉树的所有节点。
阅读全文