• XYNUOJ 【2070: 重建二叉树】


    题目描述

    题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)。

    输入

    输入有多组数据(少于100组),以文件结尾结束。 每组数据仅一行,包括两个字符串,中间用空格隔开,分别表示二叉树的后序和中序序列(字符串长度小于26,输入数据保证合法)。

    输出

    每组输出数据单独占一行,输出对应得先序序列。

    样例输入

    ACBFGED ABCDEFG
    CDAB CBAD
    

    样例输出

    DBACEGF
    BCAD
    
    
    

    题解:以在中序遍历中寻找根为切入点,把二叉树分为左右两部分,然后把这两部分又分别作为做为一个新的二叉树;

    注:后序遍历的最后一个节点总为根节点。。。没说错吧吐舌头

    代码:

    #include <iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    void toPre(char post[],char in[],int len){
        if(len<=0) return;
        int i,n;
        char root=post[len-1];
        for(i=0;i<len;i++){
            if(root==in[i]){
                n=i;
                break;
            }
        }
        cout<<root;
        toPre(post,in,n);//将左子树作为一颗新的二叉树,并在左子树中寻找他的根节点
        toPre(post+n,in+n+1,len-n-1);//将右子树作为一颗新的二叉树,并在右子树中寻找他的根节点
    }
    int main()
    {
        char in[27],post[27];
        while(~scanf("%s%s",post,in)){
            int len=strlen(in);
            toPre(post,in,len);
            printf("
    ");
        }
        return 0;
    }
    

  • 相关阅读:
    PHP培训教程 PHP里10个鲜为人知但却非常有用的函数
    跟我学Spring Boot(一)创建Spring Boot 项目
    android 4.0 webview 无法播放视频
    vs2008 安装部署 启动项
    android 使用webview 加载网页
    hbase 无法打开60010网页
    oracle 提示没有监听
    hbase 基本命令
    hbase 单机版安装
    win7 64位远程连接oracle11g64位
  • 原文地址:https://www.cnblogs.com/kzbin/p/9205193.html
Copyright © 2020-2023  润新知