请教一个关于建二叉树的问题?(分数不够再加)
//Tree_Node.h
#include<iostream>
using namespace std;
struct Tree_Node
{
char data;
Tree_Node *Lchild,*Rchild;
Tree_Node(char ch=' ');
~Tree_Node(){};
friend void crtree(Tree_Node *T, char a[],char b[], int n);
};
Tree_Node::Tree_Node(char ch)
{
data=ch;
Lchild=NULL;
Rchild=NULL;
}
//Bit_Tree.h
#include<iostream>
#include"Tree_Node.h"
class Bit_Tree
{
Tree_Node *bt_Node;
public:
Bit_Tree(){};
~Bit_Tree(){};
void cre();
void ShowTreeFirst();
void ShowTreeMiddle();
friend void crtree( Tree_Node *T,char a[],char b[],int m);
};
//BitTree.cpp
#include"Bit_Tree.h"
void crtree(Tree_Node *T, char a[],char b[], int n);
void Bit_Tree::cre()//Bit_Tree()
{
cout<<"请输入结点个数:";
int n;
cin>>n;
cout<<endl;
char *a=new char[n];
char *b=new char[n];
cout<<"请输入先序序列:"<<endl;
for(int i=0;i<n;i++)
cin>>a[i];
cout<<endl;
cout<<"请输入中序序列:"<<endl;
for(int j=0;j<n;j++)
cin>>b[j];
cout<<endl;
Tree_Node * newnode=new Tree_Node;
newnode->data=a[0];
bt_Node=newnode;
crtree(bt_Node=new Tree_Node,a,b,n);
}
void crtree(Tree_Node * T, char a[],char b[], int n)
{
int m=0;
while((b[m]!=a[0])&&(m<n))
m++;
char *c=new char[m];
char *d=new char[m];
int s=n-m;
char *e=new char[s];
char *f=new char[s];
for(int i=0;i<m;i++){c[i]=a[i];d[i]=b[i];};
for(int j=0;j<n-m;j++){e[j]=a[j+m];f[j]=b[j+m];};
Tree_Node *node1=new Tree_Node;
node1->data=c[0];
T->Lchild=node1;
if(i!=0)
crtree(T->Lchild,c,d,i);
cout<<'c'; //这句是用来检测的,但程序运行时根本没有
‘c'显示出来。
Tree_Node *node2=new Tree_Node;
node2->data=e[0];
T->Rchild=node2;
if(j!=0)
crtree(T->Rchild,e,f,j);
}
void FirstViste(Tree_Node * bt)
{
if(bt!=NULL)
{
FirstViste(bt->Lchild);
cout<<bt->data;
FirstViste(bt->Rchild);
}
}
void main()
{
Bit_Tree binarytree;
binarytree.cre();
cout<<"该二叉树的中序序列为:"; //这一句也没有显示
FirstViste(binarytree.bt_Node);
}