#include <iostream>
#include <algorithm>
#include <stdio.h>
#include<sstream>
using namespace std;
const int N = 101000;
int w[N], tr[N];
int k;
int n;
void dfs(int u)
{
if (u * 2 <= n) dfs(u * 2);
tr[u] = w[k ++ ];
if (u * 2 + 1 <= n) dfs(u * 2 + 1);
}
int flag=0;
void dfs2(int u,int x){
if(tr[u]==x){
cout<<"Y";
flag=1;
}
if (u * 2 <= n&&tr[u]>x){
cout<<"L";
dfs2(u * 2,x);
}
if (u * 2 + 1 <= n&&tr[u]<x){
cout<<"R";
dfs2(u * 2 + 1,x);
}
}
int main()
{
string s;
getline(cin,s);
stringstream ss(s);//输入流
int i=0;
while(ss>>w[i])
{
n++;
i++;
}
sort(w, w + n);
dfs(1);
int x;cin>>x;
cout<<"S";
dfs2(1,x);
if(flag==0) cout<<"N";
return 0;
}
【构建满二叉树】
最新推荐文章于 2024-07-08 22:12:26 发布