题目描述
已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
输入
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
输出
每组输入数据对应输出2行: 第1行输出中序遍历序列; 第2行输出后序遍历序列。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfa
cgefdba
提示
#include <stdio.h> #include<string.h> #include<stdlib.h> typedef char Status; typedef char telemtype; typedef struct BiTNode { Status data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; Status str[55]; int i; Status CreateBiTree(BiTree &T)//由先序序列建二叉树; { if(str[i++]==',') T=NULL; else { T=(BiTNode *)malloc(sizeof(BiTNode)); if(!T) exit(0); T->data=str[i-1]; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return 1; } void inorder(BiTree &T)//中序二叉树; { if(T) { inorder(T->lchild); printf("%c",T->data); inorder(T->rchild); } } void postorder(BiTree &T)//后序二叉树; { if(T) { postorder(T->lchild); postorder(T->rchild); printf("%c",T->data); } } int main() { BiTree T; while(~scanf("%s",str)) { i=0; CreateBiTree(T);//生成二叉树; inorder(T);//中序二叉树 printf("\n"); postorder(T);//后序二叉树 printf("\n"); } return 0; }
转载请注明原文地址: https://ju.6miu.com/read-1311780.html