首先这题不用建树,只要反复的在最小值为中介的左右区间找最小值输出即可,考虑到每次都是在一个区间找最小值,于是想到可以用递归,就像前序中序建树那样,但是写到一半发现不对!!递归讲究一个深度,也就是说他会不停到找左子区间最小的元素,然后知道没有!!!但是想要的结果是!左边找一下,右边找一下,其实这个只要用普通循环即可操作,以下是错误思路
#include<bits/stdc++.h>
using namespace std;
#define MAXN 9999999;
int n,s[40],first=1;
bool isvisited[40]=false;
/*void find_top(int l,int r){
if(l-r==0&&first==1)
{ cout<<s[l];return;}
else if(l-r==0&&first==0)
{ cout<<" "<<s[l]; return;}
else if(r-l<0) return;
int min=MAXN,pos=0;;
for(int i=l;i<=r;i++){
if(s[i]<min&&isvisited[i]==false){
min=s[i];
pos=i;
}
}
if(min!=MAXN){
if(first==1){
cout<<min;
first=0;
}
else{
cout<<" "<<min;
}
}
}*/
int main(){
int min;
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
}