void InOrder(BiTree Tree)//中序遍历 void creat(BiTree &Tree)//构建二叉树
时间: 2023-07-16 20:12:05 浏览: 167
以下是中序遍历和构建二叉树的代码实现:
中序遍历:
```c++
void InOrder(BiTree Tree) {
if(Tree) {
InOrder(Tree->lchild); // 遍历左子树
cout << Tree->data << " "; // 输出节点数据
InOrder(Tree->rchild); // 遍历右子树
}
}
```
构建二叉树:
```c++
void creat(BiTree &Tree) {
// 输入节点数据
char ch;
cin >> ch;
if(ch == '#') { // 如果是 # 表示该节点为空
Tree = nullptr;
} else {
Tree = new BiTNode; // 创建新节点
Tree->data = ch;
creat(Tree->lchild); // 构建左子树
creat(Tree->rchild); // 构建右子树
}
}
```
其中,BiTree 是指向二叉树节点的指针类型,BiTNode 是二叉树节点的结构体类型。
相关问题
用C语言写void InOrder(BiTree Tree)//中序遍历 void creat(BiTree &Tree)//构建二叉树
下面是用C语言实现的中序遍历函数和构建二叉树函数的代码:
```
//定义二叉树结构体
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
//中序遍历函数
void InOrder(BiTree Tree) {
if (Tree) {
InOrder(Tree->lchild);
printf("%c ", Tree->data);
InOrder(Tree->rchild);
}
}
//构建二叉树函数(先序遍历输入)
void creat(BiTree &Tree) {
char ch;
scanf("%c", &ch);
if (ch == '#') {
Tree = NULL;
} else {
Tree = (BiTree)malloc(sizeof(BiTNode));
Tree->data = ch;
creat(Tree->lchild);
creat(Tree->rchild);
}
}
```
在构建二叉树时,我们采用先序遍历的方式输入二叉树的结点,如果输入的结点值为`#`,表示该结点为空,否则就创建一个新的结点,并将该结点的左右子树递归构建。在中序遍历时,我们按照“左子树-根结点-右子树”的顺序遍历二叉树,并输出每个结点的值。
void InOrder(BiTree Tree)//中序遍历 void creat(BiTree &Tree)//构建二叉树的函数使用C语言编程
以下是使用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`函数中序遍历该二叉树并输出遍历结果。
阅读全文