c语言层序遍历一个二叉树
时间: 2024-10-17 13:00:46 浏览: 33
C语言编程之完全二叉树的层序遍历
在C语言中,层序遍历(也称广度优先搜索,Breadth-First Search,简称BFS)二叉树通常使用队列数据结构。以下是基本步骤:
1. 定义一个队列,并将根节点放入队列中。
2. 创建一个数组或者链表存储当前层次的所有节点,初始化为空。
3. 当队列非空时,循环执行以下操作:
a. 弹出队首元素作为当前节点。
b. 如果当前节点不为空,将其值打印出来。
c. 将当前节点的左右子节点(如果存在)加入到队列的尾部,因为下一层需要从左至右访问。
4. 继续处理队列里的节点,直到队列为空。
这是一个简单的C语言函数示例,假设我们有`struct TreeNode`定义了二叉树节点:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) return; // 空树处理
queue_t* q = create_queue(); // 初始化队列
enqueue(q, root); // 根节点入队
while (!is_empty(q)) { // 队列非空
TreeNode* node = dequeue(q); // 出队
printf("%d ", node->val); // 打印节点值
// 左右孩子入队
if (node->left != NULL)
enqueue(q, node->left);
if (node->right != NULL)
enqueue(q, node->right);
}
destroy_queue(q); // 清理队列
}
// ... 其他队列相关的辅助函数(如创建、销毁队列以及队列操作)
int main() {
// 假设构建好了一个二叉树
TreeNode* root = ...;
levelOrderTraversal(root);
return 0;
}
```
阅读全文