大会员可查看代码,点此开通大会员
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Bnode { //二叉树结点
char data;
struct Bnode* lchild, * rchild;
}Binode, * BiTree;
void createBiTree(BiTree* T, char* s, int* j, int len);
void InOrderBiTree(BiTree T, int* flag);
int main() {
char s[105];
while (scanf("%s", s) != EOF) {
int len = strlen(s);
BiTree T;
int i = 0;
createBiTree(&T, s, &i, len);
int flag = 0;
InOrderBiTree(T, &flag);
printf("\n");
// getchar();
}
return 0;
}
void createBiTree(BiTree* T, char* s, int* i, int len) {
if (*i >= len) return;
char c = s[*i];
(*i)++;
if (c == '#') {
(*T) = NULL;
}
else {
(*T) = (Binode*)malloc(sizeof(BiTree));
(*T)->data = c;
createBiTree(&((*T)->lchild), s, &*i, len);
createBiTree(&((*T)->rchild), s, &*i, len);
}
}
void InOrderBiTree(BiTree T, int* flag) {
if (T != NULL) {
InOrderBiTree(T->lchild, &(*flag));
if (*flag == 0) {
printf("%c", T->data);
}
else {
printf(" %c", T->data);
}
(*flag) = 1;
InOrderBiTree(T->rchild, &(*flag));
}
}