uva 536 - Tree Recovery

简介: 点击打开链接uva 536 思路: 二叉树 分析: 1 题目给定前序序列和中序序列,要求二叉树的后序序列 2 建好二叉树之和直接遍历输出即可,裸题 代码: #include#include#include#includeusi...

点击打开链接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;
}


目录
打赏
0
0
0
0
15
分享
相关文章
Tree Recovery
Tree Recovery
55 0
uva 548 Tree
点击打开链接uva 548 思路: 二叉树 分析: 1 题目给定一棵二叉树的中序序列和后序序列求这个二叉树里面,根节点到叶子节点的最短路径的叶子节点的值,如果有多条路径输出最小的叶子节点 2 题目说最多有10000个节点,但是由于题目所说...
1169 0
uva 112 Tree Summing
点击打开链接 题目意思:给定一个字符串,把字符串里面的数字建成一颗树,数字有可能是负号,所以这一题其实有很多可以学的,比如怎样输入会有多行,还有怎么建立一颗树,等等。
796 0
STL --- UVA 123 Searching Quickly
UVA - 123 Searching Quickly Problem's Link:   http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19296   Mean:  有一个字符串集合Ignore,还有一个文本集合TXT,在TXT中除了Ignore中的单词外其他的都是关键字,现在要你根据这些关键字来给TXT文本排序(根据关键字的字典)。
1112 0
uva 532 - Dungeon Master
点击打开链接 题目意思:给一个三维的地图,然后在地图里面有一个起点S 和终点E ,问是否能够找到一条路径从S到达E。如果能够找到就输出步数,如果不能就输出Trapped!。
779 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等