uva_548-Tree

来源:互联网 发布:淘宝苹果电脑有假货吗 编辑:程序博客网 时间:2024/05/17 06:57
/**中序,后序建树,然后遍历,求根到叶子的最小和,输出 *该叶子节点,关于通过二叉树建树问题,本博客有相关讲述。。。 */#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Node {    int v;    Node *lc, *rc;};#define MAX 10001#define MAXN 700001#define INF 0x7fffffffchar str1[MAXN], str2[MAXN];int order[MAX], post[MAX];int len, minv, ans;int find(int c, int pos, int n){    for(int i = pos; i <= n; i ++){        if( c == order[i] ) return i;    }    return -1;}void post_order_create_tree(Node *&root, int r, int m, int length){if( length <= 0 ) { root = NULL; return ;}root = new Node;root->v = post[r];int pos = find(post[r], m, length+m);int leftlen = pos - m;int rightlen = length - leftlen - 1;post_order_create_tree(root->lc, r-1-rightlen, m, leftlen);    post_order_create_tree(root->rc, r-1, pos+1, rightlen);}void find_min(Node* root, int sum){    if( !root ) return;    sum += root->v;    if(!root->lc && !root->rc){    if(minv > sum){    minv = sum;    ans = root->v;    }else if( minv == sum ){            ans = min(ans, root->v);        }    return ;    }    find_min(root->lc, sum);    find_min(root->rc, sum);}void print(Node *root){    if( !root ) return ;    printf("%d ",root->v);    print(root->lc);    print(root->rc);}int main(int argc, char const *argv[]){#ifndef ONLINE_JUDGEfreopen("test.in", "r", stdin);//freopen("test.out", "w", stdout);#endif    int length;    Node *root;while( gets(str1) > 0){    gets(str2);    length = 0;     minv = ans = INF;for(int i = 0; str1[i] != '\0'; i ++){    if( str1[i] == ' ' ) { length ++; continue;}    order[length] *= 10;            order[length] += str1[i] - '0';}length = 0;for(int i = 0; str2[i] != '\0'; i ++){    if( str2[i] == ' ' ) { length ++; continue;}    post[length] *= 10;            post[length] += str2[i] - '0';}length ++;len = length;post_order_create_tree(root, length-1, 0, length);        find_min(root, 0);        printf("%d\n",ans);        memset(order, 0, sizeof(int) * length);        memset(post, 0, sizeof(int) * length);}return 0;}


原创粉丝点击