数据结构实验之二叉树二:遍历二叉树

    xiaoxiao2026-09-01  11

    题目描述

    已知二叉树的一个按先序遍历输入的字符序列,如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
    最新回复(0)