根据先序和中序序列建立二叉树

#include 
#include 
#include 

using namespace std;
class Treenode{
public:
    char data;
    Treenode * lchild;
    Treenode * rchild;
};
typedef struct Treenode* Bitree;

Treenode* CreatBitree_by_pre_and_in(char *pre,char *in,int n){
    Treenode *T;
    char *p;
    int k;
    if(n<=0) return NULL;
    T=new Treenode;
    T->data=*pre;
    
    for(p=in;plchild=CreatBitree_by_pre_and_in(pre+1,in,k);
    T->rchild=CreatBitree_by_pre_and_in(pre+1+k,p+1,n-k-1);
    return T;
}


void PrintBitree(Treenode *T){
    if(T!=NULL){
        cout<data;
        if(T->lchild!=NULL||T->rchild!=NULL){
            cout<<'(';
            PrintBitree(T->lchild);
            cout<<',';
            if(T->rchild!=NULL){
                PrintBitree(T->rchild);
            }
            cout<<')';
        }
    }

}
int main() {
    Bitree T1;
    char pre[7]={'1','2','3','4','5','6','7'};
    char in[7]={'3','2','4','1','6','5','7'};
    T1=CreatBitree_by_pre_and_in(pre,in,7);
    PrintBitree(T1);
    return 0;
}

你可能感兴趣的:(数据结构and)