参考了https://blog.csdn.net/dream0130__/article/details/80779486
对其建立二叉树的代码进行了一些修改(修改了获取字符串的方式,以及数据格式),现在可以直接运行
#include <stdio.h>
#include <stdlib.h>
typedef struct BiNode {
char data[30];
struct BiNode* lchild, * rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree *T) { //BiTree是指向BiNode的一个指针,若值为空,则该指针为空,想要改变这个指针,就要传这个指针的指针
char ch[30];
gets_s(ch);
if (ch[0] == '#') {
*T = NULL;
}
else {
*T = (BiTree)malloc(sizeof(BiNode));
for (int i = 0; i < 30; i++) {
(*T)->data[i] = ch[i];
}
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
//前序遍历
void PreorderTraverse(BiTree T) {
if (T == NULL) {
return;
}
printf("%s\n", T->data);
PreorderTraverse(T->lchild);
PreorderTraverse(T->rchild);
}
//中序遍历
void InorderTraverse(BiTree T) {
if (T == NULL) {
return;
}
InorderTraverse(T->lchild);
printf("%s\n", T->data);
InorderTraverse(T->rchild);
}
//后序遍历
void PostorderTraverse(BiTree T) {
if (T == NULL) {
return;
}
PostorderTraverse(T->lchild);
PostorderTraverse(T->rchild);
printf("%s\n", T->data);
}
int main() {
BiTree T;
CreateBiTree(&T);
PreorderTraverse(T);
InorderTraverse(T);
PostorderTraverse(T);
}