用C++编写一个函数,对二叉树锦绣广度优先遍历
时间: 2024-09-12 13:14:15 浏览: 42
在C++中,要实现对二叉树的广度优先遍历(Breadth-First Search, BFS),通常会使用队列这种数据结构。下面是一个基本的示例代码,展示了如何实现这一功能:
```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 breadthFirstSearch(TreeNode* root) {
if (root == NULL) return; // 如果树为空,则直接返回
queue<TreeNode*> q; // 创建一个队列用于存放待访问的节点
q.push(root); // 根节点入队
while (!q.empty()) { // 当队列不为空时执行循环
TreeNode* current = q.front(); // 取出队列的队首元素
q.pop(); // 队首元素出队
cout << current->val << " "; // 访问当前节点
// 将当前节点的左右子节点分别入队(如果存在)
if (current->left != NULL) {
q.push(current->left);
}
if (current->right != NULL) {
q.push(current->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);
// 执行广度优先遍历
cout << "广度优先遍历结果:";
breadthFirstSearch(root);
// 清理分配的内存(实际应用中,应考虑更安全的内存管理方式)
delete root->left->left;
delete root->left->right;
delete root->left;
delete root->right;
delete root;
return 0;
}
```
这段代码定义了二叉树节点的结构,并实现了一个`breadthFirstSearch`函数,该函数接受二叉树的根节点作为参数,并输出树的广度优先遍历结果。在主函数中构建了一个简单的二叉树,并调用该函数进行遍历。
阅读全文