void InOrder(BiTree Tree)//中序遍历 void creat(BiTree &Tree)//构建二叉树的函数使用C语言编程
时间: 2024-01-14 08:04:27 浏览: 28
以下是使用C语言编写的中序遍历和构建二叉树的函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点类型定义
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode, *BiTree;
// 中序遍历二叉树
void InOrder(BiTree Tree) {
if (Tree == NULL) {
return;
}
InOrder(Tree->left);
printf("%d ", Tree->val);
InOrder(Tree->right);
}
// 构建二叉树
void creat(BiTree &Tree) {
int val;
scanf("%d", &val);
if (val == -1) {//输入-1表示该节点为空
Tree = NULL;
} else {
Tree = (BiTree)malloc(sizeof(TreeNode));
Tree->val = val;
creat(Tree->left);
creat(Tree->right);
}
}
int main() {
// 构建二叉树
BiTree Tree;
creat(Tree);
// 中序遍历二叉树并输出
printf("InOrder: ");
InOrder(Tree);
printf("\n");
return 0;
}
```
在`InOrder`函数中,通过递归遍历二叉树,先遍历左子树,再输出当前结点值,最后遍历右子树。在`creat`函数中,通过递归构建二叉树,先读入当前结点的值,若该值为-1,则表示该结点为空,返回NULL;否则,创建一个新的结点,设置其值为当前读入的值,并递归构建其左右子树。在`main`函数中,我通过调用`creat`函数构建一个二叉树,并调用`InOrder`函数中序遍历该二叉树并输出遍历结果。