zoukankan      html  css  js  c++  java
  • SDUT2137数据结构实验之求二叉树后序遍历和层次遍历

    数据结构实验之求二叉树后序遍历和层次遍历

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

     已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。

    输入

     输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。

    输出

    每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列

    示例输入

    2
    abdegcf
    dbgeafc
    xnliu
    lnixu

    示例输出

    dgebfca
    abcdefg
    linux
    xnuli
    探索了解钻研的过程是痛苦的 结果是享受的
    View Code
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    typedef struct tree
    {
    char data ;
    struct tree *l,*r;
    }st;
    st *creat(char *or,char *in,int k)
    {
    st *t;
    if(k<=0)
    return NULL ;
    char *p;
    int m ;
    t = (st *)malloc(sizeof(st));
    t->data = *or;//树根节点一定是先序的第一个
    for(p = in ; p!=NULL ; p++)//找到根节点
    if(*p == *or)
    break;
    m = p-in;//确定左子树的长度
    t->l = creat(or+1,in,m) ;//找到一个根节点后先序下移一个 找下一个的子树根节点
    t->r = creat(or+m+1,p+1,k-m-1);//类似的找右子树
    return t;
    }
    void posorder(st *t)
    {
    if(t)
    {
    posorder(t->l);
    posorder(t->r);
    printf("%c",t->data);
    }
    }
    void lorder(st *t)
    {
    int rear = 1,front = 0;
    st *p[52];
    p[0] = t;
    while(rear>front)//这里在纸上画下一个队列就可以看出来
    {
    if(p[front])
    {
    printf("%c",p[front]->data);
    p[rear++] = p[front]->l;//将左节点存在队列中
    p[rear++] = p[front]->r;//将有节点存在队列中
    front++;
    }
    else
    front++;
    }
    }
    int main()
    {
    int n,k;
    char or[52],in[52] ;
    st *t ;
    t = (st *)malloc(sizeof(st));
    scanf("%d%*c", &n);
    while(n--)
    {
    scanf("%s%s", or,in);
    k = strlen(or);
    t = creat(or,in,k);
    posorder(t);//后序遍历
    puts("");
    lorder(t);//层次遍历
    puts("");
    }
    return 0;
    }
  • 相关阅读:
    再叙存储设备
    分布式文件系统---测试
    分布式文件系统
    Solr 分布式(复制)配置--成功验证
    搜索服务之离线处理思路
    我为公司做的总体架构,欢迎提建议
    python的面向对象
    python异常处理
    迭代器和生成器
    python函数
  • 原文地址:https://www.cnblogs.com/shangyu/p/2378422.html
Copyright © 2011-2022 走看看