📄 creattree.cpp
字号:
#include"Tree.h"
memberTree* createTree(List* &head,memberTree* &root)
{
Stack S=InitStack();
memberTree *h=new memberTree;
root=NULL;
head=new List;
List *p;
List *q;
p=head;
head->length=0;
ifstream infile;
infile.open("relation.txt",ios::in);
if(!infile)
{
cerr<<"不能打开文件!"<<endl;
abort();
}
int n;
while(infile>>n)
{
p->num=n;
q=p;
p->next=new List;
p=p->next;
head->length++;
}
infile.close();
q->next=NULL;
delete p;
q=head;
for(int i=0;i<head->length;i++)
{
memberTree *s;
s=new memberTree;
s->parent=NULL;
s->child=NULL;
s->brother=NULL;
s->data=q->num;
if(root==NULL)
{
root=new memberTree;
root->parent=NULL;
root->child=NULL;
root->brother=NULL;
root=s;
}
else
{
h=PreOrdermemberTree(S,root,q->num);
// 该节点已经存于树中
if(h==NULL || h->data!=q->num) // 新节点
{
h=PreOrdermemberTree(S,root,p->num);
s->parent=new memberTree;
s->parent=h;
if(h->child==NULL) //插入该节点作为它双亲的第一个孩子
{
h->child=new memberTree;
h->child=s;
}
else
{
h=h->child;
while(h->brother!=NULL)
{
h=h->brother;
}
h->brother=new memberTree;
h->brother=s;
}
}
}
p=q;
q=q->next;
}
return root;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -