Tree Construction CodeForces - 675D(二叉搜索树)

标签: BST
5人阅读 评论(0) 收藏 举报
分类:

根据BST的特性,每次插入对应的地点都应该是唯一确定的,我们只要找出这个位置就可以了,我们发现对于一个数字k,k每次能插入的两个位置无非是①小于等于k的数中的最大值的右子树②大于k的数中的最小值的左子树。

因为插入的位置是唯一的,所以我们只要找出这两个位置中能插入的位置是那个就解决了这个问题

#include <bits/stdc++.h>
using namespace std;
set<int>set_node;
int n,k;
map<int, bool> l, r;
int main()
{
//    while(scanf("%d",&n)!=EOF)
    {
        cin >> n;
        for(int kase = 0 ; kase < n ; kase++)
        {
            scanf("%d",&k);
            if(kase != 0)
            {
                set<int>::iterator it;
                it = set_node.lower_bound(k);
                if(it != set_node.end() && l[*it] == 0)
                {
                    if(kase == 1)
                        cout << *it;
                    else
                        cout << " " << *it;
                    l[*it]++;
                }
                else
                {
                    it = set_node.upper_bound(k);
                    it--;
                    if(kase == 1)
                        cout << *it;
                    else
                        cout << " " << *it;
                    r[*it]++;
                }
            }
            set_node.insert(k);
            r[k] = l[k] = 0;
        }
        cout << endl;
    }
    return 0;
}

查看评论

STL乱搞 Codeforces675D Tree Construction

传送门:点击打开链接 题意:按BST插入节点。最后输出每个节点的父节点的值是多少 思路:这场的cf脑洞都很大。。 首先,假如我们要插入的节点的值为x,我们发现父节点的值一定是x的最小值的左节点 ...
  • qwb492859377
  • qwb492859377
  • 2016-05-18 21:10:26
  • 435

codeforces 675D Tree Construction

又是一道用set的例题这道题用set做确实很巧妙,前后的值本想遍历做,但是会超时,用set就不会了,而且set也能用lower_bound,长知识了,然后它的父节点只和相邻值出现的次序有关,画个图就可...
  • ffgcc
  • ffgcc
  • 2018-01-27 13:25:40
  • 37

codeforces 675D Tree Construction(set)

题意:输出2到n在一颗不平衡二叉排序树里面的父节点的编号 思路:显然边建树边输出是会TLE的,那么开个set乱搞一下就可以了 #include #include #include #inc...
  • qq_21057881
  • qq_21057881
  • 2016-05-17 21:04:32
  • 723

codeforces 675D Tree Construction (map)

题目链接:http://codeforces.com/contest/675/problem/D 题意:建立一棵二叉搜索树,比当前节点小的放左边,否则放右边。问编号2~n的节点的父节点数值是...
  • West___wind
  • West___wind
  • 2016-09-04 19:11:02
  • 136

Codeforces 675D Tree Construction (splay)

题意往一个根为a[0]的二叉搜索树里面插数,每插一个数就输出他的父节点。思路根据二叉搜索树的性质,我们插进去一个数,他的父节点肯定是比他小的最大的和比他大的最小的数里面的两个,然后这两个节点找最深的那...
  • Dreamon3
  • Dreamon3
  • 2016-05-17 14:49:15
  • 431

Codeforces 675D Tree Construction【构造,BST】

题目链接:http://codeforces.com/contest/675/problem/D题意:给定数列,依次插入二叉树,求子节点的父节点。分析:根据二叉树的性质,我们可以找到大于这个数的最小值...
  • Yukizzz
  • Yukizzz
  • 2016-05-17 17:48:16
  • 438

Codeforces 675D Tree Construction【思维+set】

D. Tree Construction time limit per test 2 seconds memory limit per test 256 megabytes in...
  • mengxiang000000
  • mengxiang000000
  • 2017-03-14 19:01:06
  • 482

CodeForces - 675D Tree Construction (set&数据结构)

CodeForces - 675D Tree Construction Time Limit: 2000MS   Memory Limit: 262144KB   ...
  • yanghui07216
  • yanghui07216
  • 2016-05-31 19:10:46
  • 287

hdu 3516 Tree Construction 四边形不等式优化

题目链接题意:二维坐标上,给出n个点,x严格单增,y严格单减。要求将这些点构成一棵树,其中边的方向只能是x轴正向和y轴正向。问树中所有边的长度之和最短为多少。分析:因为规定了变得方向,所以根节点坐标应...
  • yskyskyer123
  • yskyskyer123
  • 2016-10-07 16:09:07
  • 761

hdu3516Tree Construction

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3516 题意:给定n个点(x,y),并且保证xiyj当i 代码:因为题目保证的数据关系和树的生长要求,我...
  • Fsss_7
  • Fsss_7
  • 2016-07-17 13:40:39
  • 282
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 2248
    排名: 1万+
    最新评论