c语言建立一个二叉树并层序遍历完整代码
时间: 2024-10-17 18:13:40 浏览: 19
在C语言中,我们可以使用结构体表示二叉树节点,并结合队列数据结构来实现层序遍历。下面是一个简单的二叉树节点定义以及层序遍历的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建新节点
struct TreeNode* createNode(int val) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 层次遍历(广度优先搜索)
void levelOrderTraversal(struct TreeNode* root) {
if (root == NULL) return; // 如果根节点为空,直接返回
// 使用队列存储每一层的节点
struct TreeNode* queue[100]; // 队列大小可以根据实际情况调整
int front = -1, rear = 0;
// 先将根节点入队
queue[++rear] = root;
while (front < rear) { // 当前层非空
// 出队处理当前层节点
struct TreeNode* node = queue[front++];
printf("%d ", node->val); // 打印节点值
// 将左右子节点入队
if (node->left != NULL) queue[++rear] = node->left;
if (node->right != NULL) queue[++rear] = node->right;
}
}
int main() {
// 示例:构建一个二叉树
struct TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 层序遍历该二叉树
levelOrderTraversal(root);
printf("\n");
return 0;
}
```
阅读全文