社区讨论

关于如何判断一颗树是否为完全二叉树

灌水区参与者 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 条回复,欢迎继续交流。

正在加载回复...