亲们,二叉树顺序存储问题帮忙看一下,谢谢
/*实验内容和要求 1、验证基于顺序存储的二叉树的基本操作。
具体要求:
(1) 二叉树选用顺序存储结构,定义如下:
typedef struct sqtree
{ char data[MaxSize];
int num;
}SqTree;
(2) 基于如上结构实现功能:查找值为x的结点、输出值为x的结点的左孩子、右孩子以及双亲
*/
#include <iostream>
using namespace std;
#include <string.h>
#define MaxSize 100
typedef struct sqtree
{
char data[MaxSize];
int num;
}SqTree;
void CreatTree(SqTree *&b, char tr[])
{
b = new SqTree;
int i;
for(i = 1; i <= strlen(tr); i++)
{
b ->data[i] = tr[i];
b ->num = i;
cout<<b ->data[i];
}
}
void FindTree(SqTree *b, char x)
{
int i;
for(i = 1; i <= b ->num; i++)
{
if(b ->data[i] == x)
{
if(b ->data[2 * i]!=NULL)
{
cout<<"此结点的左孩子是:"<<b ->data[2 * i]<<endl;
}
if(b ->data[2 * i + 1]!=NULL)
{
cout<<"此结点的右孩子是:"<<b ->data[2 * i + 1]<<endl;
}
}
return ;
}
}
void main()
{
SqTree *b;
int i, a, j;
char s[MaxSize], t[MaxSize], x;
for(j = 0; j < MaxSize; j++)
{
t[j] = NULL;
}
cout<<"请输入s"<<endl;
cin>>s;
for(i = 0; s[i]!='\0'; i+=2)
{
a = s[i];
t[a] = s[i + 1];
cout<<t[a]<<" ";
}
CreatTree(b, t);//这里CreatTree()中的输出为什么什么都没有?
cout<<endl;
cout<<"请输入要查找的值:x =";
cin>>x;
cout<<"x = "<<x<<endl;
FindTree(b, x);
}