二叉树的先序遍历 RE


@周子寓

我的代码:

#include<bits/stdc++.h>
using namespace std;
int l[205],r[205],n,lc,rc,f;
void dfs(int t){
  if(t==-1){
    return;
  }
  cout<<t<<" ";
  dfs(l[t]);
  dfs(r[t]);
}
int main(){
  memset(l,-1,205);
  memset(r,-1,205);
  cin>>n;
  for(int i=1;i<=n;i++){
    cin>>f;
    if(f!=-1){
      if(l[f]!=-1){
        r[f]=i;
      }else{
        l[f]=i;
      }
    }
  }
  dfs(1);
  return 0;
}

你的输入有问题
每行输入2个,你只输入了1个

这是你RE的原因

谢谢大佬

我改成这样了。。。a了

int main(){
  memset(l,-1,205);
  memset(r,-1,205);
  cin>>n;
  for(int i=1;i<=n;i++){
    cin>>l[i]>>r[i];
  }
  dfs(1);
  return 0;
}
1 个赞

感谢解决方案

1 个赞