zoukankan      html  css  js  c++  java
  • 先序遍历加中序遍历确定后序遍历

     1 #define bug(x) cout<<#x<<" is "<<x<<endl
     2 #define IO std::ios::sync_with_stdio(0)
     3 #include <bits/stdc++.h>
     4 using namespace  std;
     5 #define ll long long
     6 #define pb push_back
     7 const ll mod=1e9+7;
     8 const int N=2e5+10;
     9 
    10 char s[N],t[N];
    11 
    12 struct node{
    13     int c;
    14     node *lson,*rson;
    15 };
    16 
    17 int a[200],b[200],id[200],d[200],n,cnt;
    18 
    19 node *root;
    20 
    21 node* build(node *now){
    22     now =new node();
    23     //now=(node *)malloc(sizeof(node));
    24     //now->lson=now->rson=NULL;
    25     int k=id[s[cnt]];  
    26     d[k]=1;
    27     now->c=s[cnt++];
    28     
    29     if(k>1&&!d[k-1]){
    30         now->lson=build(now->lson);
    31     }
    32     if(k<n&&!d[k+1]){
    33         now->rson=build(now->rson);
    34     }
    35     return now;
    36 }
    37 
    38 void preorder(node *now){
    39     if(now->lson!=NULL)preorder(now->lson);
    40     if(now->rson!=NULL)preorder(now->rson);
    41     printf("%c",now->c);
    42 }
    43 
    44 void work(){
    45     preorder(build(root));
    46 }
    47 
    48 int main(){
    49     scanf("%s",s+1);
    50     scanf("%s",t+1);
    51     n=strlen(s+1);
    52 
    53     for(int i=1;i<=n;i++){
    54         id[t[i]]=i;
    55     }
    56     work();
    57 }
    58 /*
    59 ABCD
    60 BADC
    61 BDCA
    62 
    63 1 2 4 5 3 6
    64 4 2 5 1 6 3
    65 4 5 2 6 3 1
    66 */
  • 相关阅读:
    班课6
    lesson one
    班课5
    ES6之Proxy及Proxy内置方法
    ES6模板字符串
    ES6之Symbol
    ES6对象及ES6对象简单拓展
    ES6函数的拓展
    ES6数组及数组方法
    ES6字符串方法
  • 原文地址:https://www.cnblogs.com/ccsu-kid/p/13355367.html
Copyright © 2011-2022 走看看