一个简单的数据结构的程序

描述
输入广义表表示法表示的二叉树的字符串,以#作为字符串结束标志,将广义表形式的字符串创建为链式存储结构的二叉树,并中序遍历该二叉树,输出中序遍历的序列
输入
广义表形式的字符串
输出
中序遍历的序列
样例输入
A(B,C(,E))#
样例输出
BACE
提示
字符串的长度不超过100个字符
一个字母表示一个节点
注意只有左子树或右子树的情况

#include <iostream>

using namespace std;
// 定义二叉树结点
struct BTreenode
{
char data ;
BTreenode *left ;
BTreenode *right ;
};
BTreenode *creatTree( )
{
BTreenode *S[50];
int top=-1;
BTreenode *BT ;
BT=NULL;
char *str ;
char ch;
int i=0 ;
int k=0;
BTreenode *ap;
str= new(char);
while((ch=cin.get())!='#')
str[k++]=ch;

str[k]='\0';

while(str[i])
{
switch(str[i])
{
case '(' :S[++top]=ap; k=1; break ;

case ')':top--; break ;

case ',' : k=2; break ;

default :
{
ap=new BTreenode ;

ap->data=str[i];

ap->left=NULL;

ap->right=NULL ;

if(BT==NULL)

BT=ap;

else
{
if(k==1)
S[top]->left=ap;

else
S[top]->right=ap;
}
}
}

i++;
}
return BT ;
}

void inorder(BTreenode *root)
{
if (root!=NULL)
{
inorder(root->left );
cout<<root->data;
inorder(root->right );
}
}

int main()

{

BTreenode *T;

T= creatTree( );

inorder(T) ;

cout<<endl;

return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答