랭킹 대회 주제 기록 (2)

텍스트

L2-004 이진 검색 트리입니까?

주제 설명

이진 검색 트리는 다음 속성을 가진 이진 트리로 재귀적으로 정의할 수 있습니다. 모든 노드에 대해,

  • 왼쪽 하위 트리에 있는 모든 노드의 키 값은 이 노드의 키 값보다 작습니다.
  • 오른쪽 하위 트리에 있는 모든 노드의 키 값은 이 노드의 키 값보다 크거나 같습니다.
  • 왼쪽 및 오른쪽 하위 트리는 이진 검색 트리입니다.

이진 탐색 트리의 소위 "거울"은 모든 노드의 왼쪽 및 오른쪽 하위 트리의 위치를 ​​반대로 하여 얻은 트리입니다.

일련의 정수 키가 주어지면 이것이 이진 검색 트리 또는 미러 이미지의 사전 주문 순회 결과인지 판별하는 프로그램을 작성하십시오.

입출력

입력 및 출력 형식

입력 형식: 입력
의 첫 번째 줄은 양의 정수 N(≤1000)을 제공합니다. 다음 줄은 공백으로 구분된 N 정수 키 값을 제공합니다.

출력 형식:
입력 시퀀스가 ​​이진 검색 트리 또는 미러 이미지의 사전순 순회 결과인 경우 먼저 한 줄에 YES를 출력하고 다음 줄에 트리의 사후 순회 결과를 출력합니다. 숫자 사이에는 1개의 공백이 있어야 하며 줄의 시작과 끝 부분에 추가 공백이 없어야 합니다. 대답이 아니오인 경우 NO를 출력합니다.

입출력 예

输入样例 1:
7
8 6 5 7 10 8 11
输出样例 1:
YES
5 7 6 8 11 10 8
输入样例 2:
7
8 10 11 8 6 7 5
输出样例 2:
YES
11 8 10 7 5 6 8
输入样例 3:
7
8 6 8 5 10 9 11
输出样例 3:
NO

아이디어와 코드

먼저 미러링된 이진 검색 트리에 대해 설명합니다. 실제로 이진 탐색 트리의 정의가 변경되더라도 왼쪽 서브트리의 모든 노드는 루트 노드의 값보다 크거나 같은 값을 갖고 오른쪽 서브트리의 모든 노드 값은 루트 노드의 값이고 왼쪽 및 오른쪽 하위 트리도 이진 탐색 트리입니다.

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll maxn=1e5+10;
ll a[maxn];
vector<ll> g;
ll flag=0;
ll n;
void getg(ll l,ll r){
    //cout<<l<<" "<<r<<endl;
    if(l>r)return ;
    ll l1=l+1,r1=r;
    if(!flag){
        while(l1<=r&&a[l1]<a[l])l1++;
        while(r1>l&&a[r1]>=a[l])r1--;
    }else{
        while(l1<=r&&a[l1]>=a[l])l1++;
        while(r1>l&&a[r1]<a[l])r1--;
    }
    if(l1-r1!=1)return ;//代表不是前缀序列
    getg(l+1,r1);
    getg(l1,r);
    g.push_back(a[l]);
    return ;

}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    getg(1,n);
    if(g.size()!=n){
        flag=1;
        g.clear();
        getg(1,n);
    }
    if(g.size()==n){
        cout<<"YES"<<endl;
        for(int i=0;i<n-1;i++){
            cout<<g[i]<<" ";
        }
        cout<<g[n-1]<<endl;
    }else{
        cout<<"NO"<<endl;
    }
    return 0;
}

발문


"모르면 봄바람에게 물어보고, 봄바람이 말을 하지 않으면 마음을 따른다"는 말은, 망설이는 일이 있으면 봄바람에게 어떻게 하면 좋을지 묻는다. "모르면 봄바람에게 물어도 되고, 봄바람이 말을 하지 않으면 마음을 따를 것이다." 이 문장은 인터넷 작가 '봉화공주'가 쓴 '건래'에서 따온 것이다. 원문 "결정이 서지 않는다면 봄바람을 불러도 좋다. 마음을 따르라"이다.

여기에 이미지 설명 삽입


추천

출처blog.csdn.net/weixin_46627433/article/details/124302482