1. 程式人生 > >資料結構實驗四順序表二叉樹

資料結構實驗四順序表二叉樹

#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;}