zoukankan      html  css  js  c++  java
  • P1030 求先序排列

    题目描述

    给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

    输入输出格式

    输入格式:

    2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

    输出格式:

    1行,表示一棵二叉树的先序。

    输入输出样例

    输入样例#1:
    BADC
    BDCA
    
    输出样例#1:
    ABCD

    【解析】
    后序最后一个一定是根,找到根在中序中的位置,递归构建左右子树。
    【代码】
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm> 
    using namespace std;
    string s1,s2;
    void calc(int l1,int r1,int l2,int r2)
    {
        cout<<s2[r2];
        int m=s1.find(s2[r2]);
        if (m>l1) calc(l1,m-1,l2,l2+m-l1-1);
        if (m<r1) calc(m+1,r1,l2+m-l1,r2-1);
    }
    int main()
    {
        cin>>s1>>s2;
        calc(0,s1.length()-1,0,s2.length()-1);
        cout<<endl;
        return 0;
    }
     
  • 相关阅读:
    xml解析
    xml基础
    对象的深浅克隆
    批处理文件(bat)
    贪吃蛇逻辑代码
    排序算法
    tcp,第一个例子,客户端,服务端
    网络编程三要素
    装饰者模式
    工作中遇到的问题
  • 原文地址:https://www.cnblogs.com/zzyh/p/6821333.html
Copyright © 2011-2022 走看看