用c语言实现二叉树的建立对二叉树进行先序遍历,并打印层号
时间: 2024-01-23 10:38:46 浏览: 70
以下是用C语言实现二叉树的建立和先序遍历,并打印层号的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int data; // 数据域
struct TreeNode* left; // 左子树指针
struct TreeNode* right; // 右子树指针
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
int val;
scanf("%d", &val);
if (val == -1) { // 如果输入-1,表示该节点为空
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode)); // 创建根节点
root->data = val;
root->left = createTree(); // 递归创建左子树
root->right = createTree(); // 递归创建右子树
return root;
}
// 先序遍历
void preOrder(TreeNode* root, int level) {
if (!root) { // 如果当前节点为空,直接返回
return;
}
printf("node:%d, level:%d\n", root->data, level); // 打印节点和层号
preOrder(root->left, level + 1); // 递归遍历左子树,层号加1
preOrder(root->right, level + 1); // 递归遍历右子树,层号加1
}
int main() {
TreeNode* root = createTree(); // 创建二叉树
preOrder(root, 0); // 先序遍历并打印层号
return 0;
}
```
在上述代码中,我们使用递归的方式创建二叉树,并且在先序遍历的时候,通过参数level来记录当前节点所在的层号,最后打印出节点和层号即可。
阅读全文