数据结构实验四顺序表二叉树

#include<iostream>
#include<string>
#define MaxSize 100
using namespace std;
class Tree
{private:
string array[100];
public:
static int count;
Tree(){int i;for(i=0;i<MaxSize;i++)array[i]="#";string data;for(int j=1;j<MaxSize;j++){cout<<"请输入结点数据:";
cin>>data;array[j]=data;count++;string chioce;cout<<"要继续输入吗?(N&n:停止输出)";cin>>chioce;
if(chioce=="N"||chioce=="n")break;}}//用构造函数输入//
void LevelPut(){for(int k=1;k<Tree::count;k++)cout<<array[k]<<",";cout<<endl;}//层序输出//
void GetParent(){for(int i=1;i<Tree::count;i++)
{cout<<"结点数据:"<<array[i]<<endl;if(i==0)cout<<"该节点无双亲!"<<endl;else if(array[i/2]!="#")cout<<"该结点双亲:"<<array[i/2]<<endl;else cout<<"该节点无双亲!"<<endl;}}//输出双亲//
void GetrChild(){for(int k=1;k<Tree::count;k++)
{cout<<"节点数据:"<<array[k]<<endl;if(array[k*2+1]!="#")cout<<"该节点右孩子:"<<array[k*2+1]<<endl;else cout<<"该节点无右孩子!"<<endl;}}//输出右孩子//
void GetlChild(){for(int j=1;j<Tree::count;j++)
{cout<<"节点数据:"<<array[j]<<endl;if(array[2*j]!="#")cout<<"该节点左孩子:"<<array[2*j]<<endl;else cout<<"该节点无左孩子!"<<endl;}}//输出左孩子//
void Getleave(){cout<<"叶子结点数据:";for(int i=0;i<Tree::count;i++)
{if(array[i*2]=="#")if(array[i*2+1]=="#")cout<<array[i]<<",";}cout<<endl;}};//输出叶子//
int Tree::count=1;
int main()
{Tree T;void menu();system("color 1F");
int i;cout<<"欢迎进入顺序表二叉树系统!"<<endl;
do
{menu();cout<<"请输入你的选择:";
cin>>i;
switch(i)
{case 1:T.LevelPut();break;
case 2:T.GetParent();break;
case 3:T.GetlChild();break;
case 4:T.GetrChild();break;
case 5:T.Getleave();break;
case 0:break;
default:cout<<"选择错误!请重新选择:";break;
}}while(i);
cout<<"已输入结点数据数:"<<Tree::count<<endl;return 0;}
void menu()
{cout<<"1--层序输出结点数据;"<<endl;
 cout<<"2--找出结点数据双亲;"<<endl;
 cout<<"3--找出结点数据左孩子;"<<endl;
 cout<<"4--找出结点数据右孩子;"<<endl;
 cout<<"5--找出所有叶子结点数据;"<<endl;
 cout<<"0--退出程序."<<endl;}


猜你喜欢

转载自blog.csdn.net/guangnianaaa/article/details/80247147