其他分享
首页 > 其他分享> > A - 数据结构实验之二叉树二:遍历二叉树 Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式

A - 数据结构实验之二叉树二:遍历二叉树 Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式

作者:互联网

 

 

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;
}

 

标签:遍历,二叉树,str,bitTree,root,输入
来源: https://www.cnblogs.com/firhk/p/15919629.html