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;
    }
    
  • 相关阅读:
    刷盘子的中国
    重温一些文章
    小心时间悄悄流失
    WebService笔记一
    JavaScript类型转换方法及需要注意的问题
    TSQL查询 点滴 1
    介绍几款浏览器兼容性测试工具
    [推荐] jQuery 表格插件汇总
    学会总结,学会关注细节,学会拥有一颗平静的心。
    Open Source Web Design!
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14454984.html
Copyright © 2011-2022 走看看