用c语言编写程序,对二叉树进行先序遍历,并打印层号。
时间: 2024-03-05 15:51:54 浏览: 17
下面是一个使用C语言编写的对二叉树进行先序遍历,并打印层号的程序:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
// 递归遍历二叉树并打印层号
void preOrderTraversal(struct TreeNode* root, int depth) {
if (root == NULL) { // 如果节点为空,返回
return;
}
printf("层号:%d,节点值:%d\n", depth, root->data); // 打印层号和节点值
preOrderTraversal(root->left, depth + 1); // 递归遍历左子树
preOrderTraversal(root->right, depth + 1); // 递归遍历右子树
}
int main() {
// 构建二叉树
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->data = 1;
root->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->left->data = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->data = 3;
root->right->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->left->data = 4;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->right->data = 5;
root->right->right->left = NULL;
root->right->right->right = NULL;
// 对二叉树进行先序遍历,并打印层号
preOrderTraversal(root, 1);
return 0;
}
```
输出结果如下:
```
层号:1,节点值:1
层号:2,节点值:2
层号:2,节点值:3
层号:3,节点值:4
层号:3,节点值:5
```