0
点赞
收藏
分享

微信扫一扫

PAT (Advanced Level) Practice - 1064 Complete Binary Search Tree(30 分)


题目链接:​​点击打开链接​​

题目大意:略。

解题思路:完全二叉树有这么一个性质,若 a 节点的下标为 i,那么它左儿子的下标为 2i,右儿子为 2i+1. 而这个下标则为完全二叉树在层序遍历时的输出顺序。而对于任意一棵搜索树,其中序遍历的输出,是一个递增的数列。根据这两个性质,可以有如下算法。

AC 代码

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f

using namespace std;

typedef long long ll;

int n,l;
int a[1005], rs[1005];

void dfs(int rt)
{
if(rt<=n)
{
dfs(2*rt);
rs[rt]=a[l++];
dfs(2*rt+1);
}
}

int main()
{
while(~scanf("%d",&n))
{
l=0;
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
dfs(1);
printf("%d",rs[1]);
for(int i=2;i<=n;i++) printf(" %d",rs[i]);
}

return 0;
}


举报

相关推荐

0 条评论