用c语言编写程序,可以手动输入二叉树并对二叉树进行先序遍历,并打印层号。
时间: 2024-01-23 22:12:27 浏览: 41
以下是用C语言编写的程序,可以手动输入二叉树并对二叉树进行先序遍历,并打印层号:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点定义
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树
TreeNode* createBinaryTree() {
TreeNode *root = NULL;
int val;
printf("请输入根节点的值(-1表示节点为空):");
scanf("%d", &val);
if (val == -1) { // 空节点
return root;
}
root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = val;
root->left = createBinaryTree(); // 递归创建左子树
root->right = createBinaryTree(); // 递归创建右子树
return root;
}
// 先序遍历二叉树并打印层号
void preOrderTraversal(TreeNode *root, int level) {
if (root == NULL) {
return;
}
printf("第%d层: %d\n", level, root->data); // 打印结点值和层号
preOrderTraversal(root->left, level+1); // 递归遍历左子树,层号加1
preOrderTraversal(root->right, level+1); // 递归遍历右子树,层号加1
}
int main() {
TreeNode *root = createBinaryTree();
printf("\n先序遍历结果:\n");
preOrderTraversal(root, 1);
return 0;
}
```
在程序中,我们首先定义了二叉树结点的结构体 `TreeNode`,包括结点的值 `data`,左子树指针 `left` 和右子树指针 `right`。
接着,我们定义了一个 `createBinaryTree` 函数,用于手动输入二叉树。在函数中,我们先输入根节点的值,如果根节点的值为 `-1`,则返回空节点;否则,我们创建一个新的结点,并递归创建左子树和右子树。
最后,我们定义了一个 `preOrderTraversal` 函数,用于先序遍历二叉树并打印层号。在函数中,我们先打印当前结点的值和层号,然后递归遍历左子树和右子树,层号加1。
在 `main` 函数中,我们先调用 `createBinaryTree` 函数创建二叉树,然后调用 `preOrderTraversal` 函数进行先序遍历并打印层号。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![dll](https://img-home.csdnimg.cn/images/20210720083646.png)