C语言二叉树层次遍历的代码与截图
时间: 2024-12-25 18:32:23 浏览: 53
C语言中,二叉树的层次遍历通常使用队列数据结构,因为队列的先进先出特性适合这种逐层访问节点的需求。以下是一个简单的非递归层次遍历的代码示例:
```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;
// 创建一个空队列
struct Queue {
TreeNode** nodes;
int front, rear, size;
} q = {NULL, -1, -1, 0};
// 将根节点入队
q.nodes = (TreeNode**)malloc(sizeof(TreeNode*) * 1);
q.nodes[0] = root;
q.front = q.rear = 0;
q.size++;
while (q.rear != q.front) {
// 出队并处理当前层节点
TreeNode* node = q.nodes[q.front++];
printf("%d ", node->val); // 输出节点值
// 如果节点有左孩子,则入队
if (node->left) {
q.nodes = (TreeNode**)realloc(q.nodes, sizeof(TreeNode*) * (q.size + 1));
q.nodes[q.rear++] = node->left;
}
// 如果节点有右孩子,则入队
if (node->right) {
q.nodes = (TreeNode**)realloc(q.nodes, sizeof(TreeNode*) * (q.size + 1));
q.nodes[q.rear++] = node->right;
}
}
}
// 示例创建一个二叉树
TreeNode* createSampleTree() {
// ... 这里是你创建二叉树的代码 ...
}
int main() {
TreeNode* root = createSampleTree();
levelOrderTraversal(root);
free(q.nodes); // 释放内存
return 0;
}
```
由于这是一个文本平台,无法提供截图。你可以根据上述代码在本地编写,并通过运行程序查看层次遍历结果。
阅读全文
相关推荐















