用C语言建立一棵二叉树,按层次遍历该二叉树,并显示出这棵二叉树。
时间: 2024-06-21 19:03:58 浏览: 76
二叉树的创建与遍历,C语言实现
在C语言中,我们可以使用结构体和指针来表示二叉树节点,并使用队列数据结构进行层次遍历。下面是一个简单的步骤:
1. 定义二叉树节点结构体(Node):
```c
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
```
2. 创建一个函数用于插入节点到二叉树:
```c
void insert(Node** root, int value) {
if (*root == NULL) {
*root = (Node*)malloc(sizeof(Node));
(*root)->data = value;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (value < (*root)->data) {
insert(&((*root)->left), value);
} else {
insert(&((*root)->right), value);
}
}
```
3. 按层次遍历(使用队列):
```c
void levelOrderTraversal(Node* root) {
if (root == NULL) return;
queue<Node*> q;
q.push(root);
while (!q.empty()) {
Node* node = q.front();
printf("%d ", node->data); // 打印当前层的节点值
// 将当前节点的左右子节点加入队列,如果存在
if (node->left != NULL) q.push(node->left);
if (node->right != NULL) q.push(node->right);
// 移除已处理的节点
q.pop();
}
}
```
4. 主函数调用层次遍历:
```c
int main() {
Node* root = NULL;
// 插入节点,构建你的二叉树...
insert(&root, 5); // 示例
insert(&root, 3);
insert(&root, 7);
insert(&root, 2);
insert(&root, 4);
insert(&root, 6);
insert(&root, 8);
printf("层次遍历结果: ");
levelOrderTraversal(root);
return 0;
}
```
阅读全文