PAT A 1064 Complete Binary Search Tree (30分)

一、思路

考察了两个数据结构知识点:
1、BST的中序遍历序列是个升序序列
2、完全二叉树的顺序存储:下标从0开始,则对结点i,其左孩子下标为i * 2 + 1,有孩子下标为1 * 2 + 2;

由此可以想到,对给定数据排序,并建立长度为N的数组即为一个完全二叉树,对其从0(根)开始中序遍历依次赋值,即得到完全二叉树的BST。且从0到N顺序遍历就是层序遍历序列

二、代码

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int N, index = 0;
vector<int> in(1000), tree(1000);
void inorder( int t )
{
    if( t < N )
    {
        inorder( t * 2 + 1 );
        tree[t] = in[index++];
        inorder( t * 2 + 2 );
    }
}
int main()
{
    scanf("%d", &N);
    for( int i = 0; i < N; ++i )
        scanf("%d", &in[i]);
    sort( in.begin(), in.begin() + N );
    inorder( 0 );
    for( int i = 0; i < N; ++i )
        printf("%s%d", i ? " ":"", tree[i]);
}
PAT A 1064 Complete Binary Search Tree (30分)PAT A 1064 Complete Binary Search Tree (30分) 铁肥宅 发布了154 篇原创文章 · 获赞 144 · 访问量 9279 私信 关注
上一篇:redis主从


下一篇:深入浅出!传智播客Java视频教程