zoukankan      html  css  js  c++  java
  • 7-5 Tree Traversals Again (25分)

     

     解题思路:入栈顺序即为前序,出栈顺序为中序,等价于求由前序和中序确定后序

    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>
    typedef char Element[5];
    typedef struct TNode {
        int data;
        struct TNode *left,*right;
    }*Tree;
    Tree PostOrder(int pre[],int low,int high,int in[],int left,int right) {
        Tree T=malloc(sizeof(struct TNode));
        T->data=pre[low];
        
        int i,pos;
        for(i=left; i<=right; i++) {
            if(pre[low]==in[i]) {
                pos=i;
                break;
            }
        }
        int llen=pos-left,rlen=right-pos;
    
        if(llen)
            T->left=PostOrder(pre,low+1,low+llen,in,left,pos-1);
        else
            T->left=NULL;
        if(rlen)
            T->right=PostOrder(pre,low+llen+1,high,in,pos+1,right);
        else
            T->right=NULL;
        return T;
    }
    
    int t=0;
    void PostTrav(Tree T,int post[]) {
        if(T) {
            PostTrav(T->left,post);
            PostTrav(T->right,post);
            post[t++]=T->data;
        }
    }
    int main() {
        int n,i,j=0,k=0;
        scanf("%d",&n);
        int a[n],b[n],c[n];
        int stack[n];
        int top=-1;
        Element str;
        Tree T=NULL;
        for(i=0; i<2*n; i++) {
            scanf("%s",str);
            if(!strcmp(str,"Push")) {
    
                scanf("%d",&a[j]);
                stack[++top]=a[j];
                j++;
            } else {
                b[k++]=stack[top--];
            }
        }
        T=PostOrder(a,0,n-1,b,0,n-1);
        PostTrav(T,c);
        for(i=0;i<n;i++)
        {
            if(i)
            printf(" ");
            printf("%d",c[i]);
        }
        return 0;
    }

  • 相关阅读:
    MemCached总结二:数据管理指令
    MemCached总结一:Unbutu操作系统下memcached服务器安装和telnet方式连接memcache
    Laravel5 开启Debug
    状压dp
    树形dp
    区间dp
    线性dp
    背包九讲
    dp求解各种子串子序列
    线段树详解
  • 原文地址:https://www.cnblogs.com/snzhong/p/12763104.html
Copyright © 2011-2022 走看看