[难度:容易] 先根和中根构建二叉树

来源:互联网 发布:淘宝宝贝图片怎么拍照 编辑:程序博客网 时间:2024/06/06 07:38

题目描述

具体代码

#include <iostream>#include <string>using namespace std;struct Node{    char data;    Node* left,*right;};const int maxn=26+4;struct MemPool{    Node mem[maxn];    int cnt;    void init()    {        cnt=0;    }    Node* newNode(int td,Node*l,Node* r)    {        Node* t=&mem[cnt++];        t->data=td;        t->left=l;        t->right=r;        return t;    }};MemPool nodePool;string preStr,inStr;Node* buildTree(int pre,int inI,int inJ){    if(inJ>inI)    {        int i;        for(i=inI;i<inJ;++i)        {            if(inStr[i]==preStr[pre])                break;        }        Node* l=buildTree(pre+1,inI,i);        Node* r=buildTree(pre+i-inI+1,i+1,inJ);        Node* root=nodePool.newNode(preStr[pre],l,r);        return root;    }    else        return 0;}void postOrder(Node* root){    if(root==0)        return;    postOrder(root->left);    postOrder(root->right);    cout<<root->data;}int main(){    while(cin>>preStr>>inStr)    {        nodePool.init();        Node* root=buildTree(0,0,inStr.size());        postOrder(root);        cout<<endl;    }    return 0;}


原创粉丝点击