给我一个c的层序遍历二叉树代码
时间: 2024-12-23 18:23:23 浏览: 43
在C语言中,层序遍历(也称为广度优先搜索,BFS)二叉树通常使用队列数据结构来辅助实现。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建一个新的二叉树节点
TreeNode* newNode(int data) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 层序遍历函数
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
// 使用队列存储每一层的节点
Queue* queue = createQueue(); // 假设createQueue()函数用于创建空队列
enqueue(queue, root); // 将根节点入队
while (!isEmpty(queue)) {
// 弹出队首元素并打印
TreeNode* node = dequeue(queue);
printf("%d ", node->val);
// 如果节点有左、右子节点,将它们入队
if (node->left != NULL) {
enqueue(queue, node->left);
}
if (node->right != NULL) {
enqueue(queue, node->right);
}
}
destroyQueue(queue); // 清理队列
}
int main() {
// 假设你已经有一个实际的二叉树,并将其根节点赋值给root
TreeNode* root = ...; // 你的二叉树根节点
levelOrderTraversal(root);
printf("\n");
return 0;
}
```
在这个例子中,`createQueue()`和`destroyQueue()`是用来创建和销毁队列的函数,`enqueue()`表示向队列添加元素,`dequeue()`表示移除并返回队列的第一个元素,`isEmpty()`则检查队列是否为空。
阅读全文
相关推荐


















