c语言建立一个二叉树并层序遍历
时间: 2024-10-17 20:13:44 浏览: 26
C语言编程之完全二叉树的层序遍历
在C语言中,我们可以使用结构体来表示二叉树节点,并利用队列数据结构实现层序遍历(也叫做广度优先搜索,Breadth-First Search)。下面是一个简单的示例:
首先定义一个二叉树节点结构:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
```
然后创建一个队列,用于存储待访问的节点,以及两个指针(front和rear)分别指向队首和队尾:
```c
#define MAX_SIZE 100 // 队列最大容量
TreeNode queue[MAX_SIZE]; // 存储节点
int front = -1, rear = -1; // 队列指针
```
接下来是层序遍历的核心部分:
```c
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) return;
// 根据根节点入队
front = rear = 0;
queue[rear++] = *root;
while (front < rear) {
// 出队并处理当前层节点
TreeNode* node = &queue[front++];
printf("%d ", node->val);
// 将左、右子节点(如果存在)入队
if (node->left != NULL) queue[rear++] = *node->left;
if (node->right != NULL) queue[rear++] = *node->right;
// 当前层处理完毕后更新front指针到下一个层的第一个节点位置
}
}
```
最后,在你需要使用的地方调用`levelOrderTraversal(root)`函数,其中`root`是你二叉树的根节点。
阅读全文