• 重建二叉树


    给定一棵二叉树的前序遍历和中序遍历的结果,求其后序遍历。

    输入

    输入可能有多组,以EOF结束。
    每组输入包含两个字符串,分别为树的前序遍历和中序遍历。每个字符串中只包含大写字母且互不重复。

    输出

    对于每组输入,用一行来输出它后序遍历结果。

    理论知识可以参考这个大佬的博客:

    http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73260878e482a958448e435061e5a38b8fc7f794c5189822f3b1ced545be0f636743d0637b7ec92ce1583afd7756fde28230016913518c469abdc352fd621e04d9faf0e97cae733e3b9a2a7c82552dd52756df0f49c2e7703ba6fe76335f4a7e95f642c07cee827648f4e072e885246a14689f7436b10f1f4ca5d3cd45cd2766597b834c02962b604d3140c5546b738c21f505627903c308e322a05e2fc2be33d0f4234b738a4cfc3a19f489bdd9a26e8f9dcd8248211e4d29e8a664300458a22a9dabba53c145272afdda915d342b7ed98ca5be965c06159ad2977386abe7ce5869820f4755b84f0188d3e56273f0bafa402fd62046f26a94e0fc11cd702ba990749cb9eee9f9e6552afee&p=c23bd50286cc41af58ba8c2d0214bb&newp=997ec54ad6c341fe0be296344d5dcf231610db2151d7d41e6b82c825d7331b001c3bbfb423241602d8c7776d04aa495ee1fa317835052ba3dda5c91d9fb4c57479d9&user=baidu&fm=sc&query=%B8%F8%B6%A8%D2%BB%BF%C3%B6%FE%B2%E6%CA%F7%B5%C4%C7%B0%D0%F2%B1%E9%C0%FA%BA%CD%D6%D0%D0%F2%B1%E9%C0%FA%B5%C4%BD%E1%B9%FB%2C%C7%F3%C6%E4%BA%F3%D0%F2%B1%E9%C0%FA%A1%A3&qid=d70328c800038146&p1=3

    每次从先序遍历中找到根结点,然后在中序中确定左右子树,可以保证输出是后序输出;

    代码如下

    #include <stdio.h>
    #include <cstring>
    #include <iostream>
    using namespace std;
    int aCnt,len;
    char pre[1001],mid[1001],ans[1001]; 
    //pStart:前序序列的开始位置; pEnd 前序结束位置; mStart: 中序开始位置,mEnd:中序结束的位置 
    void back(int pStart,int pEnd, int mStart, int mEnd)
    {
    int k;
    if(pStart>pEnd||mStart>mEnd)return;
    //mid[k] 当前遍历树的 根节点
    for(k=mStart;k<=mEnd;k++)
    if(pre[pStart]==mid[k])break;
    back(pStart+1,pStart+k-mStart,mStart,k-1); //后续遍历 左子树
    back(pStart+k-mStart+1,pEnd,k+1,mEnd); //后续遍历 右子树
    ans[aCnt++]=mid[k]; //存储根节点
    }
    
    int main()
    {
    int n;
    while(~scanf("%s%s",pre,mid))
    {
    len=strlen(pre);
    aCnt=0;
    back(0,len-1,0,len-1);
    for(int i=0;i<aCnt;i++)printf("%c",ans[i]);
    printf("
    ");
    }
    return 0;
    }
    View Code
  • 相关阅读:
    设计模式小结
    Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
    全新对待.net一次全面的旅程
    页面生命周期小结
    面向对象点滴
    Chapter 2.1:WCF服务契约的重载与继承详解
    一封给“X教授”的回信(讨论Socket通信)
    Chapter 1.4:WCF实践 元数据详解
    有了WCF,Socket是否已人老珠黄?
    Chapter 1.3:WCF实践 HelloWorld
  • 原文地址:https://www.cnblogs.com/new-hand/p/7241775.html
Copyright © 2020-2023  润新知