二叉树的层次遍历算法可以使用队列来实现。具体步骤如下:\n\n1. 创建一个队列,并将根节点入队。\n2. 当队列不为空时,进行以下操作:\n - 出队队首节点,访问该节点。\n - 如果该节点有左子节点,则将左子节点入队。\n - 如果该节点有右子节点,则将右子节点入队。\n3. 重复步骤2,直到队列为空。\n\n以下是C语言代码实现:\n\nc\n#include <stdio.h>\n#include <stdlib.h>\n\n// 二叉树节点结构体\nstruct TreeNode {\n int val;\n struct TreeNode* left;\n struct TreeNode* right;\n};\n\n// 创建新节点\nstruct TreeNode* createNode(int val) {\n struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));\n if (newNode == NULL) {\n printf("Memory allocation failed!\n");\n exit(1);\n }\n newNode->val = val;\n newNode->left = NULL;\n newNode->right = NULL;\n return newNode;\n}\n\n// 层次遍历函数\nvoid levelOrder(struct TreeNode* root) {\n if (root == NULL) {\n return;\n }\n\n struct TreeNode* queue[1000]; // 用数组模拟队列\n int front = 0;\n int rear = 0;\n\n queue[rear++] = root; // 根节点入队\n\n while (front < rear) {\n struct TreeNode* currNode = queue[front++];\n printf("%d ", currNode->val);\n\n if (currNode->left != NULL) {\n queue[rear++] = currNode->left;\n }\n if (currNode->right != NULL) {\n queue[rear++] = currNode->right;\n }\n }\n}\n\nint main() {\n // 创建二叉树\n struct TreeNode* root = createNode(1);\n root->left = createNode(2);\n root->right = createNode(3);\n root->left->left = createNode(4);\n root->left->right = createNode(5);\n root->right->left = createNode(6);\n root->right->right = createNode(7);\n\n // 层次遍历二叉树\n printf("Level order traversal: ");\n levelOrder(root);\n printf("\n");\n\n return 0;\n}\n\n\n以上代码首先创建了一个二叉树,并使用层次遍历算法输出了二叉树的节点值。输出结果为:1 2 3 4 5 6 7。

C语言实现二叉树层次遍历算法 - 代码示例与详解

原文地址: https://www.cveoy.top/t/topic/p2sk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录