(新手)关于顺序查找二叉树的程序
小弟这学期开始上数据结构的课。。恰好老师要我们做一个顺序查找2叉树的程序。。
所以就在课上一边听课一边写了一段程序。。
希望高手能够指点一下。。谢谢了。
#include "stdafx.h"
#include <iostream>
using namespace std;
#define max 100
int inputtree(char* array);
void father(char* array);
void lchild(char* array);
void rchild(char* array);
int last;
int main(int argc, char* argv[])
{ char tree[max];
last=inputtree(tree);
father(tree);
lchild(tree);
rchild(tree);
return 0;
}
int inputtree(char* array)
{
int i=1;
cout<<"请输入树,为使之成为完全二叉树,空结点输入^,以回车结束"<<endl;
while(1)
{cin.get(array[i]);
if(array[i]=='\n')
break;
i++;
}
return i-1;
}
void father(char* array)
{
char a;
cout<<"请输入要查询父亲的结点"<<endl;
cin>>a;
if(a=='a')cout<<"没有父亲"<<endl;
else
{
for(int i=1;i<=last;i++)
{
if(array[i]==a)
{i=i/2;
cout<<a<<"的父亲为"<<array[i]<<endl;
break;
}
}
if(i==last)cout<<"没有查询到父亲"<<endl;
}
}
void lchild(char* array)
{
char a;
cout<<"请输入要查询左儿子的结点"<<endl;
cin>>a;
for(int i=1;i<=last;i++)
{
if(array[i]==a)
{i=2*i;
if(i<=last&&array[i]!='^')
cout<<a<<"的左儿子为"<<array[i]<<endl;
else
cout<<a<<"没左儿子"<<endl;
}
}
}
void rchild(char* array)
{
char a;
cout<<"请输入要查询右儿子的结点"<<endl;
cin>>a;
for(int i=1;i<=last;i++)
{
if(array[i]==a)
{i=2*i+1;
if(i<=last&&array[i]!='^')
cout<<a<<"的右儿子为"<<array[i]<<endl;
else
cout<<a<<"没右儿子"<<endl;
}
}
}