c语言层序遍历二叉树完整代码
时间: 2024-10-17 11:00:50 浏览: 58
C语言编程之完全二叉树的层序遍历
在C语言中,层序遍历(广度优先搜索,Breadth-First Search,简称BFS)二叉树通常使用队列数据结构来辅助实现。以下是完整的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <queue>
// 定义二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建一个新的二叉树节点
TreeNode* createNode(int data) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 层序遍历函数
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
// 创建一个空队列用于存储节点
queue<TreeNode*> q;
// 将根节点入队
q.push(root);
while (!q.empty()) {
// 弹出队首元素,并打印其值
TreeNode* node = q.front();
printf("%d ", node->val);
// 将左、右子节点分别入队
if (node->left != NULL) {
q.push(node->left);
}
if (node->right != NULL) {
q.push(node->right);
}
// 出队已访问节点
q.pop();
}
}
int main() {
// 创建一个简单的二叉树作为例子
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
printf("Level order traversal of the binary tree is:\n");
levelOrderTraversal(root);
return 0;
}
```
在这个代码中,我们首先定义了一个二叉树节点结构,然后实现了创建新节点的函数。`levelOrderTraversal`函数负责层序遍历,通过队列逐层处理节点。最后,在`main`函数中,我们构建了一个简单的二叉树并调用了`levelOrderTraversal`。
阅读全文