用c语言实现二叉树的建立对二叉树进行先序遍历,并打印层号
时间: 2024-01-23 14:38:46 浏览: 72
下面是用 C 语言实现二叉树的建立,先序遍历,并打印层号的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int data; // 节点数据
struct TreeNode *left; // 左子树
struct TreeNode *right; // 右子树
} TreeNode;
// 递归建立二叉树
TreeNode *createTree() {
TreeNode *p;
int data;
scanf("%d", &data);
if (data == 0) {
p = NULL;
} else {
p = (TreeNode *)malloc(sizeof(TreeNode));
p->data = data;
p->left = createTree();
p->right = createTree();
}
return p;
}
// 先序遍历并打印层号
void preOrder(TreeNode *root, int level) {
if (root == NULL) {
return;
}
printf("Level %d: %d\n", level, root->data);
preOrder(root->left, level + 1);
preOrder(root->right, level + 1);
}
int main() {
TreeNode *root;
printf("请输入二叉树的先序遍历序列(0表示空节点):\n");
root = createTree();
printf("二叉树的先序遍历序列为:\n");
preOrder(root, 1);
return 0;
}
```
在这段代码中,我们定义了一个 `TreeNode` 结构体来表示二叉树的节点,其中包含了节点数据、左子树和右子树三个成员变量。我们通过递归的方式来建立二叉树,当遇到一个节点数据为 0 时,表示这个节点是空节点,返回 `NULL`。然后我们使用先序遍历的方式遍历整颗二叉树,并在每个节点打印层号和节点数据。层号通过 `level` 参数传递,初始值为 1。我们在主函数中调用 `createTree()` 函数来建立二叉树,并调用 `preOrder()` 函数来遍历二叉树并打印层号。
阅读全文