#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n, tr[N];
vector<int> level;
void insert(int u, int x)
{
if(!tr[u])
{
tr[u] = x;
return;
}
if(x > tr[u]) insert(u * 2, x);
else insert(u * 2 + 1, x);
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
int num;
cin >> num;
insert(1, num);
}
bool isYes = true;
for(int i = 1; level.size() < n; i++)
{
if(tr[i] == 0) isYes = false;
else level.push_back(tr[i]);
}
cout << level[0];
for(int i = 1; i < level.size(); i ++) cout << ' ' << level[i];
cout << endl;
if(isYes) puts("YES");
else puts("NO");
}
【天梯赛】L3-010 是否完全二叉搜索树
最新推荐文章于 2024-09-15 15:53:16 发布