回复 3楼 geninsf009
											你写的很复杂····
我不是刚学·····不过还是谢谢!!!
代码:
/*完成树的顺序存储结构(双亲数组法)实现。完成如下功能:
(1)能进行初始化;即在算法中用双亲数组完成树的存储
(2)输入任一结点,求其在数组中的存储位置
(3)输入一结点,求其双亲
(4)输入一结点,求其孩子
(5)输入一结点,求其度(选作)*/
//定义树变量:psqtree
  t1;
//输入树中结点个数:cin>>t1.num;
//输入树中第i个结点的数据元素的值:
//cin>>t1.nodes[i].data
//输入第i个元素的双亲的下标
#include"iostream.h"
typedef char elemtype;
#define maxsize 10
typedef struct 
{
    elemtype data;//数据元素的值
    int parent;//双亲结点下标位置
}pnode;//一个数据结点的类型
typedef struct
{
    pnode nodes[maxsize];//结构体数组,每一个元素有两个成员,data,parent
    int num;//树中结点的个数
}psqtree;//树的顺序存储结构类型
void createtree(psqtree
  &t1)
{
  cout<<"输入结点的个数:";//输入结点个数,初始化num
      cin>>t1.num;
    for(int i=1;i<=t1.num;i++)
     {
        cin>>t1.nodes[i].data;
        cin>>t1.nodes[i].parent;
  }
}
int
  arraylocation(psqtree &t1,elemtype e)//输入任一结点e,求其在数组中的存储位置i
{
    int i=1;
    while(t1.nodes[i].data!=e)
    {
        i++;
    }
    return i;
}
void getparent(psqtree &t1,elemtype e)//输入一结点,求其双亲
{
    int i=1;
    while(t1.nodes[i].data!=e)
    {
        i++;
    }
    cout<<t1.nodes[t1.nodes[i].parent].data;
}
void getsons(psqtree &t1,elemtype e)//输入一结点,求其孩子
{
    int i=1;
    while(t1.nodes[i].data!=e)
    {
        i++;
    }
    for(int j=1;j<=t1.num;j++)
    {
        if(t1.nodes[j].parent==i)
            cout<<t1.nodes[j].data;
    }
}
void getdu(psqtree &t1)
{
    int max=0;//结点子树的个数
    int i=-1;//结点的下标
        while(i<t1.num)
    {
     int num=0;
         for(int j=1;j<=t1.num;j++)
        {
          if(t1.nodes[j].parent==i)
            num++;
         }
    
         if(max<num)
             max=num;
    i++;
    }
        cout<<max;
}
void dislist(psqtree
  &t1)
{
 
    for(int i=1;i<=t1.num;i++)
     {
        cout<<t1.nodes[i].data;
       // cout<<t1.nodes[i].parent;
  }
}
void main()
{
psqtree t1;
createtree(t1);
dislist(t1);
elemtype e;
cout<<endl;
cout<<"输入结点为e的元素:";
cin>>e;
cout<<"数据的位置:"<<arraylocation(t1,e);
cout<<endl;
cout<<"输入结点为e的(求双亲):";
cin>>e;
getparent(t1,e);
cout<<endl;
cout<<"输入结点为e的(求孩子):";
cin>>e;
getsons(t1,e);
    
cout<<endl;
cout<<"树的度为:";
getdu(t1);
}