这个代码的dfs自身调用怎么写的QwQ
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+7;
int que[N],path[N];
bool big=0,small=0;
void dfs(int u,int step,int n){
path[step]=que[u];//存储当前步骤
if(u*2>n){//如果是叶子节点
for(int i=0;i<=step;i++){
if(i){//如果不是根节点
if(path[i]>path[i-1]){//如果当前比上一个大,则是小根堆
small=1;
}
else if(path[i]<path[i-1]){//如果当前比上一个小,则是大根堆
big=1;
}
}
cout<<path[i]<<" ";//打印当前路径
}
cout<<"\n";
return ;
}
}
int main(){
int n;cin>>n;
for(int i=1;i<=n;i++){
cin>>que[i];
}
dfs(1,0,n);
if((big&&small)||!(big&&small)){
cout<<"Not Heap";
}
else if(big){
cout<<"Max Heap";
}
else{
cout<<"Min Heap";
}
}
/*
dfs思考思路
1、u*2 大于n的都是叶子节点
2、完全二叉树的遍历
3、到达叶结点,输出搜索路径
*/