问题遇到的现象和发生背景
输入给出1棵二叉树的信息。对于该二叉树,第一行中给出一个非负整数N (≤20),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第 i 行对应编号第 i 个结点,给出该结点中存储的1个英文大写字母、其左孩结点的编号、右孩结点的编号。如果孩结点为空,则在相应位置上给出 “-”。给出的数据间用一个空格分隔。注意:树的根为结点“A",并保证树中每个结点存储的字母是不同的。
有几行代码看不懂是什么意思能否讲解一下(看不懂的那几行已标注)
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
struct Tree
{
char data;
int l,r;
} T1[50];
int build(struct Tree T[])
{
int i,N;
char cl,cr;
int check[100];
scanf("%d",&N);
getchar();
if(N)
{
for(i=0;i<N;i++) check[i]=1;
for(i=0;i<N;i++)
{
scanf("%c %c %c",&T[i].data,&cl,&cr);
getchar();
if(cl!='-')
{
T[i].l=cl-'0';
check[T[i].l]=-1;
}
else
T[i].l=-1;
if(cr!='-')
{
T[i].r=cr-'0';
check[T[i].r]=-1;
}
else
T[i].r=-1;
}
for(i=0;i<N;i++) //这里看不懂是什么意思
if(check[i]==1) //这里看不懂是什么意思
return i; //这里看不懂是什么意思
return -1; //这里看不懂是什么意思
}
}
void stage(struct Tree t, int k, string s[50]) //这里看不懂是什么意思
{
s[k]+=t.data;
if(t.l!=-1) stage(T1[t.l],k+1,s);
if(t.r!=-1) stage(T1[t.r],k+1,s);
}
void output(string s[50])
{
for (int i=0;i<50;i++)
{
if(s[i]!="") cout<<s[i];
else
{
cout<<endl;
return;
}
}
}
int main()
{
string s[50];
int a;
a=build(T1);
stage(T1[a],0,s);
output(s);
return 0;
}
```###### 用代码块功能插入代码,请勿粘贴截图
###### 运行结果及报错内容
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果