树的双亲节点存储结构,是用结构体数组保存当前节点的值以及他的父节点的位置。
根节点存放双亲节点位置处为-1;
优点:找寻根节点和双亲节点很方便。
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct //节点结构
{
char data;
int parent;
}node;
typedef struct //树结构
{
node tn[100];
int n;
}tree;
void createtree(tree &t)//引用型,通过函数内部代码改变变量本身
{
int i;
cout<<"输入节点个数"<<endl;
cin>>t.n;
for(i=0;i<t.n;i++)
{
cout<<"输入节点值,双亲序号"<<endl;
cin>>t.tn[i].data>>t.tn[i].parent;
}
}
void printree(tree t)
{
int i;
for(i=0;i<t.n;i++)
{
cout<<t.tn[i].data<<' ';
}
}
void prinparent(tree t)
{
char c;
cout<<"请输入你想找其双亲的节点"<<endl;
cin>>c;
int i;
for(i=1;i<t.n;i++)
{
if(t.tn[i].data==c)
{
cout<<"其双亲节点为:";
cout<<t.tn[t.tn[i].parent].data<<' '<<endl;
return;
}
}
cout<<"未找到"<<endl;
}
int main(int argc, char* argv[])
{
tree t;
createtree(t);
while(getchar()!=' ')
{
prinparent(t);
}
return 0;
}