uva 536 - Tree Recovery

1586 단어 tree
클릭 하여 링크 열기 uva 536
사고: 데이터 구조 분석: 1 문 제 는 앞 순서 서열 과 중간 순서 서열 을 정 하고 이 진 트 리 의 뒤 순서 서열 2 에 이 진 트 리 를 만 들 고 직접 출력 을 옮 겨 다 니 면 됩 니 다. 누 드 문제 코드:
#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

using namespace std;



const int MAXN = 30;



char preOrder[MAXN];

char midOrder[MAXN];



struct Node{

    char c;

    Node *left;

    Node *right;

    Node(char c){

        this->c = c;

        this->left = left;

        this->right = right;

    }

};

Node *root;



Node* createTree(char *pre , char *mid , int len){

     if(len == 0) 

         return NULL;

     int k = 0;

     while(mid[k] != pre[0])

         k++;

     Node *root = new Node(pre[0]);

     root->left = createTree(pre+1 , mid , k);

     root->right = createTree(pre+k+1 , mid+k+1 , len-k-1);

     return root;

}



void output(Node *u){

    if(u != NULL){

        output(u->left); 

        output(u->right); 

        printf("%c" , u->c);

    }

}



void solve(){

    int len = strlen(preOrder); 

    root = createTree(preOrder , midOrder , len);

    output(root);

    puts("");

}



int main(){

   while(scanf("%s" , preOrder) != EOF){

        scanf("%s" , midOrder);   

        solve();

   }

   return 0;

}

좋은 웹페이지 즐겨찾기