请编写函数,输入二叉树。 函数原型 void BinTreeInput(TNODE **root); 说明:root 为指示二叉树根指针的指针。输入二叉树时按先根遍历的顺序输入结点的值,用特殊字符“#”来表示空二叉树。 在“BinTree.h”中声明函数,在“BinTree.c”中实现函数。 BinTree.h ...... void BinTreeInput(TNODE **root); ...... BinTree.c ...... /* 你提交的代码将被嵌在这里 */ 打开“main.c”,修改主函数对以上函数进行测试。 main.c #include <stdio.h> #include "BinTree.h" int main() { TNODE *r; BinTreeCreate(&r); BinTreeInput(&r); ...... BinTreeDestroy(&r); return 0; } 题图.jpg 输入样例 EIBJ##H###DF#A##G#C## 输出样例 C G D A F E I H B J
时间: 2023-12-03 10:45:13 浏览: 175
BitTree-二叉树的实现
4星 · 用户满意度95%
```c
// BinTree.h
#ifndef BINTREE_H
#define BINTREE_H
typedef struct tnode TNODE;
struct tnode {
char data;
TNODE *lchild, *rchild;
};
void BinTreeCreate(TNODE **root);
void BinTreeInput(TNODE **root);
void BinTreeDestroy(TNODE **root);
#endif
// BinTree.c
#include <stdio.h>
#include <stdlib.h>
#include "BinTree.h"
void BinTreeCreate(TNODE **root) {
*root = NULL;
}
void BinTreeDestroy(TNODE **root) {
if (*root != NULL) {
BinTreeDestroy(&(*root)->lchild);
BinTreeDestroy(&(*root)->rchild);
free(*root);
}
}
void BinTreeInput(TNODE **root) {
char data;
scanf("%c", &data);
if (data == '#') {
*root = NULL;
} else {
*root = (TNODE *)malloc(sizeof(TNODE));
if (*root == NULL) {
printf("Error: malloc failed\n");
exit(1);
}
(*root)->data = data;
BinTreeInput(&(*root)->lchild);
BinTreeInput(&(*root)->rchild);
}
}
```
测试代码:
```c
// main.c
#include <stdio.h>
#include "BinTree.h"
int main() {
TNODE *r;
BinTreeCreate(&r);
printf("请输入二叉树(先根遍历,用#表示空节点):");
BinTreeInput(&r);
printf("输出二叉树:\n");
printf(" %c \n", r->data);
printf(" %c %c \n", r->lchild->data, r->rchild->data);
printf(" %c %c %c \n", r->lchild->lchild->data, r->rchild->lchild->data, r->rchild->rchild->data);
printf(" %c %c \n", r->lchild->lchild->lchild->data, r->lchild->rchild->data);
BinTreeDestroy(&r);
return 0;
}
```
阅读全文