//采用链接存储设计二叉树的基本算法
#include<iostream.h>
#define MaxSize 100
//#define MaxWidth 40
typedef char elemtype;
typedef struct node
{
elemtype data;
struct node *left,*right;
}BTree;
//void dispstack(BTree *stack[],int top);
void creatree(BTree* &b,char *str)
{
BTree *stack[MaxSize],*p;
int top=-1,k,j=0;
char ch;
b=NULL;
ch=str[j];
while(ch!='/0')
{
switch(ch)//(b,"(a(b(c),d(e(,f),g)))")
{
case'(':top++;stack[top]=p;k=1;break;
case')':top--;break;
case',':k=2;break;
default:p=new BTree;
p->data=ch;p->left=p->right=NULL;
if(b==NULL)
b=p;
else
{
switch(k)
{
case 1:stack[top]->left=p;break;
case 2:stack[top]->right=p;break;
}
}
}
j++;
ch=str[j];
}
}
void print(BTree *bt)
{
if(bt)
{
print(bt->left);
cout<<bt->data<<" ";
print(bt->right);
}
}
void main()
{
BTree *root;
creatree(root,"(a(b(c),d(e(,f),g)))");
print(root);
}
帮我看看 是不是有问题啊