A - 数据结构实验之二叉树二:遍历二叉树
Description
已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
Input
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
Output
每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。
Sample
Input
abc,,de,g,,f,,,
Output
cbegdfa cgefdba
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node{ char data; struct node *lchild, *rchild; }*bitTree; int cnt = 0; char str[100]; void creatTree(bitTree &root, char str[]){ char ch = str[cnt++]; if(ch == ','){ root = NULL; } else{ root = new node; root->data = ch; creatTree(root->lchild, str); creatTree(root->rchild, str); } } void zhongxu(bitTree root){ if(root){ zhongxu(root->lchild); printf("%c", root->data); zhongxu(root->rchild); } } void houxu(bitTree root){ if(root){ houxu(root->lchild); houxu(root->rchild); printf("%c", root->data); } } int main(){ while(~scanf("%s", str)){ cnt = 0; bitTree root; creatTree(root, str); zhongxu(root); printf("\n"); houxu(root); printf("\n"); } return 0; }