Language: C

#include <stdio.h>
#include <string.h>
#define N 500000
int count;

struct node
{
  int key;
  int pare;
  int left;
  int right;
};

struct node bi[N];

void insert(int z)
{
  int x,y;
  int num=0;

  y=-1;
  x=bi[0].key;
//  printf("while start\n");
  while(1)
  {
    if(x==-1) break;
    y = num;
    if(z<x)
    {
      num = bi[num].left;
      if(num!=-1) x = bi[num].key;
      else
      {
        x=-1;
      }
    }
    else
    {
      num = bi[num].right;
      if(num!=-1) x = bi[num].key;
      else
      {
        x=-1;
      }
    }
  }
//  printf("while end\n");
  bi[count].pare=y;
  bi[count].key=z;

  if(y==-1)
  {
    bi[0].key=z;
  }
  else if(z<bi[y].key)
  {
    bi[y].left = count;
  }
  else
  {
    bi[y].right = count;
  }

  count++;
}

void pre(int now)
{
  printf(" %d",bi[now].key);
  if(bi[now].left!=-1)  pre(bi,bi[now].left);
  if(bi[now].right!=-1)  pre(bi,bi[now].right);
}

void in(int now)
{
  if(bi[now].left!=-1) in(bi,bi[now].left);
  printf(" %d",bi[now].key);
  if(bi[now].right!=-1) in(bi,bi[now].right);
}


void print()
{
  in(0);
  printf("\n");
  pre(0);
  printf("\n");
}

void find(int key)
{
  int i=0;
  while(1)
  {
    if(bi[i].pare==-1) break;
    if(bi[i].key==key)
    {
      printf("yes\n");
      return;
    }
    i = bi[i].pare;
  }
  while(1)
  {
    if(bi[i].key<key)
    {
      i=bi[i].right;
      if(bi[i].key==-1)
      {
        printf("no\n");
        return;
      }
    }
    else
    {
      i=bi[i].left;
      if(bi[i].key==-1)
      {
        printf("no\n");
        return;
      }
    }
    if(bi[i].key==key)
    {
      printf("yes\n");
      return;
    }
  }
}

int main(void)
{
  int n,i;
  int num;
  char comm[10];
  count=0;

  for(i=0;i<N;i++)
  {
    bi[i].key = -1;
    bi[i].pare = -1;
    bi[i].left = -1;
    bi[i].right = -1;
  }
//  printf("set ok\n");

  scanf("%d",&n);

  for(i=0;i<n;i++)
  {
//    printf("comm:");
    scanf("%s",comm);
//    printf("comm:%s\n",comm);
    if(strcmp(comm,"insert")==0)
    {
//      printf("scan:");
      scanf("%d",&num);
      insert(num);
    }
    else if(strcmp(comm,"find")==0)
    {
      scanf("%d",&num);
      find(num);
    }
    else
    {
//      printf("print\n");
      print();
    }
  }
  return 0;
}

Compiler output:
main.c: In function 'pre':
main.c:70:29: error: passing argument 1 of 'pre' makes integer from pointer without a cast [-Wint-conversion]
   70 |   if(bi[now].left!=-1)  pre(bi,bi[now].left);
      |                             ^~
      |                             |
      |                             struct node *
main.c:67:14: note: expected 'int' but argument is of type 'struct node *'
   67 | void pre(int now)
      |          ~~~~^~~
main.c:70:25: error: too many arguments to function 'pre'
   70 |   if(bi[now].left!=-1)  pre(bi,bi[now].left);
      |                         ^~~
main.c:67:6: note: declared here
   67 | void pre(int now)
      |      ^~~
main.c:71:30: error: passing argument 1 of 'pre' makes integer from pointer without a cast [-Wint-conversion]
   71 |   if(bi[now].right!=-1)  pre(bi,bi[now].right);
      |                              ^~
      |                              |
      |                              struct node *
main.c:67:14: note: expected 'int' but argument is of type 'struct node *'
   67 | void pre(int now)
      |          ~~~~^~~
main.c:71:26: error: too many arguments to function 'pre'
   71 |   if(bi[now].right!=-1)  pre(bi,bi[now].right);
      |                          ^~~
main.c:67:6: note: declared here
   67 | void pre(int now)
      |      ^~~
main.c: In function 'in':
main.c:76:27: error: passing argument 1 of 'in' makes integer from pointer without a cast [-Wint-conversion]
   76 |   if(bi[now].left!=-1) in(bi,bi[now].left);
      |                           ^~
      |                           |
      |                           struct node *
main.c:74:13: note: expected 'int' but argument is of type 'struct node *'
   74 | void in(int now)
      |         ~~~~^~~
main.c:76:24: error: too many arguments to function 'in'
   76 |   if(bi[now].left!=-1) in(bi,bi[now].left);
      |                        ^~
main.c:74:6: note: declared here
   74 | void in(int now)
      |      ^~
main.c:78:28: error: passing argument 1 of 'in' makes integer from pointer without a cast [-Wint-conversion]
   78 |   if(bi[now].right!=-1) in(bi,bi[now].right);
      |                            ^~
      |                            |
      |                            struct node *
main.c:74:13: note: expected 'int' but argument is of type 'struct node *'
   74 | void in(int now)
      |         ~~~~^~~
main.c:78:25: error: too many arguments to function 'in'
   78 |   if(bi[now].right!=-1) in(bi,bi[now].right);
      |                         ^~
main.c:74:6: note: declared here
   74 | void in(int now)
      |      ^~