在做跟树有关的题目的时候,当然是leetcode上面的题目,我发现leetcode上面的树是这样表示的:{2,1,3,0,7,9,1,2,#,1,0,#,#,8,8,#,#,#,#,7},于是为了便于测试,我可以直接利用这个文本文件来生成一个树,这样生成树的工作就变得非常简单了。代码如下:
typedef struct TreeNode{
int value;
struct TreeNode *left;
struct TreeNode *right;
}TreeNode,*Tree;
void constructtree(Tree *T , char filepath[])
{
FILE *f;
f=fopen(filepath,"r");
char line[256];
Tree tarray[256];
memset(tarray,NULL,sizeof(Tree)*256);
fgets(line,256,f);
cout<<line<<endl;
char numstr[12];
int nump=0,k=0;
for(int i=1 ; i<256 && line[i]!='\0'; i++){
if(line[i]==',' || line[i]=='}'){
numstr[nump]='\0';
if(numstr[nump-1]=='#'){
tarray[k]=NULL;
k++;
}
else{
TreeNode *tp=(Tree)malloc(sizeof(TreeNode));
tp->value=atoi(numstr);
tarray[k]=tp;
k++;
}
nump=0;
}
else{
numstr[nump]=line[i];
nump++;
}
}
int root,child;
root=0,child=1;
for(;root<k;root++){
if(tarray[root]==NULL)
continue;
tarray[root]->left=tarray[child];
child++;
tarray[root]->right=tarray[child];
child++;
}
*T=tarray[0];
fclose(f);
}