感觉逻辑没问题,但就是报运行错误,有没有大佬救救我,呜呜呜
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
#include <stack>
#include <cmath>
using namespace std;
#define LL long long
//const
struct node{
int f,l,r,num;
char ysf;
}T={-1,-1,-1,-1,'.'};
vector<node> tree(1000050,T);
string str;
int p=0,i=0;
int Num(){
i++;
int ans=0;
stack<int> s;
while(int(str[i])>=48&&int(str[i])<=57){
int h=int(str[i])-48;
s.push(h);
i++;
}
int n=s.size();
for(int j=0;j<n;j++){
ans+=s.top()*pow(10,j);
s.pop();
}
return ans;
}
int main()
{
int m,q;
cin>>m>>q>>str;
for(i=0;i<str.size();){
if(str[i]=='x') {
// tree[p].ysf=str[++i];
// tree[p].num=Num();
tree[p].ysf=str[++i];
tree[p].num=Num();
}
if(str[i]=='?') {
// p*=2;
// i++;
tree[p+1].f=p;
tree[p].l=p+1;
p++;
i++;
}
if(str[i]==':'){
if(tree[tree[p].f].r==-1){
tree[tree[p].f].r=++p;
}else{
int P=p;
while(1){
P=tree[P].f;
if(tree[tree[P].f].r==-1){
tree[tree[P].f].r=p++;
break;
}
}
}
i++;
}
if(int(str[i])>=48&&int(str[i])<=57){
tree[p].ysf='=';
i--;
tree[p].num=Num();
}
}
//cout<<'1';
for(int j=0;j<m;j++){
cout<<'\n'<<j<<' '<<tree[j].num<<' '<<tree[j].ysf<<' '<<tree[j].l<<' '<<tree[j].r<<' '<<tree[j].f<<'\n';
}
// for(int i=0;i<q;i++){
// int Q;
// cin>>Q;
// int j=0;
// while(tree[j].ysf!='='){
// if(tree[j].ysf=='>'){
// if(Q>tree[j].num) j=tree[j].l;
// else j=tree[j].r;
// }
// if(tree[j].ysf=='<'){
// if(Q<tree[j].num) j=tree[j].l;
// else j=tree[j].r;
// }
// }
// cout<<tree[j].num<<'\n';
// }
return 0;
}