Codeforces Round #353 (Div. 2) D. Tree Construction(每个点按照二叉树排序树的插入插入到树中,问最后每个点的父亲节点的值是多少)

来源:互联网 发布:淘宝店铺降权 编辑:程序博客网 时间:2024/06/05 17:16

传送门:Codeforces Round #353 (Div. 2) D. Tree Construction


题意:每个点按照二叉树排序树的插入插入到树中,问最后每个点的父亲节点的值是多少


思路:
根据二叉排序树的性质可以知道,一个数插入到二叉排序树中,要么是插入到正好比它大的数的左边,要么是正好比它小的数的右边,利用一个set维护一下就可以了


#include<bits/stdc++.h>using namespace std;set<int>st;map<int,int>ls,rs;int main(){    int n,x;    scanf("%d",&n);    scanf("%d",&x);    st.insert(x);    for(int i=2;i<=n;i++){        scanf("%d",&x);        auto it=st.lower_bound(x);        if(it==st.end()){            it--;            rs[*it]=x;            printf("%d ",*it);        }        else if(ls[*it]==0){            ls[*it]=x;            printf("%d ",*it);        }        else{            it--;            rs[*it]=x;            printf("%d ",*it);        }        st.insert(x);    }}
0 0
原创粉丝点击