信息学奥赛 二叉树 c++ 层序遍历
作者:野牛程序员:2023-07-19 09:21:54 C++阅读 2754
在信息学奥赛中,二叉树是一个常见的数据结构。层序遍历是一种遍历二叉树的方式,它按照从上到下、从左到右的顺序逐层遍历二叉树的节点。
下面是一个使用 C++ 实现二叉树层序遍历的示例代码:
#include <iostream>
#include <queue>
using namespace std;
// 定义二叉树的节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 层序遍历函数
void levelOrderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
// 使用队列来辅助层序遍历
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front();
q.pop();
// 输出当前节点的值
cout << node->val << " ";
// 将当前节点的左右子节点加入队列
if (node->left) {
q.push(node->left);
}
if (node->right) {
q.push(node->right);
}
}
}
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);
// 层序遍历二叉树
levelOrderTraversal(root);
return 0;
}上述代码中,首先定义了二叉树的节点结构 TreeNode,其中包含一个值 val,以及左右子节点的指针 left 和 right。然后,实现了层序遍历函数 levelOrderTraversal,使用队列 q 来辅助层序遍历。
在 levelOrderTraversal 函数中,首先判断根节点是否为空,若为空则直接返回。然后,将根节点加入队列 q。之后,进入循环,每次从队列中取出一个节点,输出该节点的值,并将该节点的左右子节点加入队列。继续循环,直到队列为空,完成层序遍历。
在 main 函数中,创建了一个示例二叉树,并调用 levelOrderTraversal 函数对二叉树进行层序遍历。输出结果为按层序遍历顺序输出的节点值。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:树莓派 zero 图形界面
- 下一篇:c++树莓派点亮led灯
