c语言二叉树层序遍历代码
时间: 2023-10-14 15:22:51 浏览: 132
下面是使用C语言实现二叉树层序遍历的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
/* 二叉树节点结构体 */
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
/**
* 创建新的二叉树节点
* @param val 节点值
* @return 新的二叉树节点
*/
struct TreeNode* createNode(int val) {
struct TreeNode* node = (struct TreeNode*) malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
/**
* 层序遍历二叉树
* @param root 二叉树根节点
*/
void levelOrder(struct TreeNode* root) {
if (root == NULL) {
return;
}
/* 创建队列 */
int front = 0, rear = 0;
struct TreeNode* queue[10000];
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);
/* 层序遍历二叉树 */
printf("Level order traversal: ");
levelOrder(root);
return 0;
}
```
以上代码中,使用队列实现层序遍历二叉树,时间复杂度为 O(n),其中 n 为二叉树节点数。
阅读全文