东华oj层次遍历用C++实现
时间: 2024-05-12 07:12:48 浏览: 32
以下是使用 C++ 实现二叉树层次遍历的示例代码:
```c++
#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 levelOrder(TreeNode* root) {
// 如果根节点为空,则直接返回
if (!root) return;
// 创建队列,存储每一层的节点
queue<TreeNode*> q;
// 将根节点添加到队列中
q.push(root);
// 循环遍历队列中的节点,直到队列为空
while (!q.empty()) {
// 获取队列中的节点数量,也就是当前层的节点数量
int size = q.size();
// 循环遍历当前层的所有节点
for (int i = 0; i < size; i++) {
// 获取队列中的头节点,并将其弹出
TreeNode* node = q.front();
q.pop();
// 输出当前节点的值
cout << node->val << " ";
// 如果当前节点有左子节点,则将其添加到队列中
if (node->left) q.push(node->left);
// 如果当前节点有右子节点,则将其添加到队列中
if (node->right) q.push(node->right);
}
// 输出换行符,表示当前层已经遍历完成
cout << endl;
}
}
int main() {
// 创建二叉树
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);
// 二叉树层次遍历
levelOrder(root);
return 0;
}
```
其中,我们使用队列来存储每一层的节点,然后循环遍历队列中的节点,并对于每个节点,输出其值,并将其左右子节点添加到队列中。当当前层的所有节点遍历完成后,我们输出一个换行符,表示当前层已经遍历完成。最后,我们的二叉树层次遍历就完成了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)