社区讨论
关于如何判断一颗树是否为完全二叉树
灌水区参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo31yqiz
- 此快照首次捕获于
- 2023/10/23 23:28 2 年前
- 此快照最后确认于
- 2023/10/23 23:28 2 年前
刚学OI,在这里卡住了。
CPP#include <bits/stdc++.h>
#define N 100010
using namespace std;
struct node
{
int l,r;
};
int id[N],a[N];
node p[N];
queue<int> Q;
void bfs(int s)
{
Q.push(s);
int cnt=0;
while(!Q.empty())
{
int u=Q.front();
Q.pop();
id[u]=++cnt;
if(p[u].l) Q.push(p[u].l);
if(p[u].r) Q.push(p[u].r);
}
}
int main()
{
int n; cin>>n;
for(int i=1;i<=n;i++) cin>>p[i].l>>p[i].r;
bfs(1);
a[1]=1;
for(int i=1;i<=n;i++)
{
a[id[i]*2]=id[p[i].l];
a[id[i]*2+1]=id[p[i].r];
}
/* for(int i=1;i<=n;i++)
{
cout<<a[i]<<endl;
}*/
for(int i=1;i<=n;i++)
{
if(a[i]==0)
{
cout<<"false"<<endl;
return 0;
}
}
cout<<"true"<<endl;
return 0;
}
但是就是不对。
请求广大谷民们的帮助/
回复
共 1 条回复,欢迎继续交流。
正在加载回复...