层次遍历二叉树用队列的方法,c语言
时间: 2024-11-22 15:36:08 浏览: 26
层次遍历二叉树使用队列的方法是一种广度优先搜索(BFS),也叫做“层序遍历”。在C语言中,你可以按照以下步骤来实现:
1. 定义一个结构体表示节点,包含值和左右子节点指针;
2. 创建一个空的队列,并将根节点入队;
3. 当队列非空时,执行循环:
a. 弹出队首元素作为当前节点;
b. 访问当前节点的值;
c. 如果当前节点有左子节点,将其入队;
d. 如果当前节点有右子节点,将其入队;
4. 重复步骤3直到队列为空。
以下是简化版的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int val;
struct Node* left;
struct Node* right;
} TreeNode;
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) return;
Queue queue; // 假设Queue是一个自定义的数据结构,用于存储节点
enqueue(&queue, root); // 入队
while (!is_empty(&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);
}
}
// 自定义队列操作函数(假设已实现)
// enqueue、dequeue 和 is_empty 等
int main() {
// 构造并初始化二叉树
// ...
levelOrderTraversal(root); // 调用层级遍历函数
return 0;
}
```
阅读全文