Note
Code:
#include<bits/stdc++.h>
using namespace std;
int n,num[25];
struct tree{
int left,right;
}t[25];
void create(int root,int i){
if(root>n) return ;
num[i]=root;
if(t[root].left!=-1) create(t[root].left,2*i);
if(t[root].right!=-1) create(t[root].right,2*i+1);
}
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
string l,r;
cin>>n;
bool hash[n];
fill(hash,hash+n,false);
for(int i=0;i<n;i++){
cin>>l>>r;
if(l=="-") t[i].left=-1;
else{
t[i].left=stoi(l);
hash[stoi(l)]=true;
}
if(r=="-") t[i].right=-1;
else{
t[i].right=stoi(r);
hash[stoi(r)]=true;
}
}
int i=0;
while(hash[i]==true) i++;
int root=i;
fill(num,num+25,-1);
create(root,1);
i=1;
for(;i<=n;i++)
if(num[i]==-1) break;
if(i<=n) printf("NO %d",root);
else printf("YES %d",num[n]);
return 0;
}