已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
每组输入数据对应输出2行: 第1行输出中序遍历序列; 第2行输出后序遍历序列。
#include <stdio.h> char st[150]; int g=0; typedef struct node {int data;struct node *lchild,*rchild; }Tree; struct node *creat(Tree *p) {char c = st[g++];if(c==','||c=='\0'){return NULL;}else{p = new Tree;p->data = c;p->lchild = creat(p->lchild);p->rchild = creat(p->rchild);}return p; } void interval(Tree *p) {if(p){interval(p->lchild);printf("%c",p->data);interval(p->rchild);} } void final(Tree *p) {if(p){final(p->lchild);final(p->rchild);printf("%c",p->data);} } int main() {while(~scanf("%s",st)){g = 0;Tree *p;p = creat(p);interval(p);printf("\n");final(p);printf("\n");}return 0; }
转载于:https://www.cnblogs.com/CCCrunner/p/6444590.html
相关资源:数据结构遍历二叉树算法C语言版(附完成版实验报告)