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

题目链接:点击打开链接

 

题目大意:略。

 

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

 

AC 代码

#include
#include

#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

 

你可能感兴趣的:(#,ACM,#,PTA,#,DFS,#,技巧题集,#,树)