zoukankan      html  css  js  c++  java
  • 1064 Complete Binary Search Tree (30 分)

    题意

    给出N个非负整数,要用它们构建一棵完全二 叉排序树。输出这棵完全二叉排序树的层序遍历序列。

    思路

    1. 如果使用数组来存放完全二叉树,那么对完全二叉树当中的任何一个结点(设编号为x,其中根结点编号为1),其左孩子结点的编号一定是2x,而右孩子结点的编号一定是2x+1。那么就可以开一个数组tree[maxn],其中tree[1] ~ tree[n]按层序存放完全二叉树的n个结点,这个数组就存放了一棵完全二叉树,只不过暂时还没有为其元素进行赋值。
    2. 考虑到对一棵二叉排序树来说,其中序遍历序列是递增的,那么思路就很清晰了:先将输入的数字从小到大排序,然后对tree数组表示的二叉树进行中序遍历,并在遍历过程中将数字从小到大填入数组,最后就能得到一棵完全二叉排序树。而由于tree数组就是按照二叉树的层序来存放结点的,因此只需要将数组元素按顺序输出即为层序遍历序列。
    const int N=1010;
    int tree[N];
    int a[N];
    int n;
    int k;
    
    void inorder(int root)
    {
        if(root*2 <= n) inorder(root*2);
        tree[root]=a[k++];
        if(root*2+1 <= n) inorder(root*2+1);
    }
    
    int main()
    {
        cin>>n;
    
        for(int i=0;i<n;i++) cin>>a[i];
    
        sort(a,a+n);
    
        inorder(1);
    
        for(int i=1;i<=n;i++)
            if(i > 1) cout<<' '<<tree[i];
            else cout<<tree[i];
        cout<<endl;
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    Java 连接 Memcached 服务
    Memcached命令-存储命令-查找命令-清理命令
    memcache安装
    Python爬虫模拟登录带验证码网站
    HashMap原理
    redis 在java中的使用
    redis 事务
    Redis命令续
    Redis命令
    ApplicationListener用法
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14454984.html
Copyright © 2011-2022 走看看