Language: C++

#include<stdio.h>
#include<stdlib.h>
#define NIL NULL

struct node{
  struct node *right;
  struct node *left;
  struct node *parent;
  int key;
};
typedef struct node * Node;

Node root;

Node treeMinimum(Node x){

  while (x->left != NIL)
    {
      x = x->left;
    }
  return x;
}

Node treeMaximum(Node x){

  while (x->right != NIL)
    {
      x = x->right;
    }
  return x;
}

Node treeSearch(Node u, int k){
  if (u == NIL || k == u->key)
    return u;
  if (k < u->key)
    return treeSearch(u->left, k);
  else
    return treeSearch(u->right, k);
}

Node treeSuccessor(Node x){

  if (x->right != NIL)
    return treeMinimum(x->right);
  /*y = x.p;
  while (y != NIL && x == y.right)
    {
      x = y;
      y = y.p;
    }
    return y;*/
}

//void treeDelete(Node z){
// Node y; // node to be deleted
//Node x; // child of y



//}

void insert(int k){
  Node y = NIL;
  Node x = root;
  Node z;

  z = malloc(sizeof(struct node));
  z->key = k;
  z->left = NIL;
  z->right = NIL;

  y = NIL;
  x = k->root;
  while (x != NIL)
    {
      y = x;
      if (z->key < x->key)x = x->left;
      else x = x->right;
      z->parent = y;
      if (y == NIL)
	k->root = z;
      else if (z->key < y->key)
	y->left = z;
      else y->right = z;
    }

}

void inorder(Node u){
  if (u != NIL) inorderTreeWalk(u->left);
  printf("%d",u->key);
  inorderTreeWalk(u->right);
}
void preorder(Node u){
  if (u == NIL)
    return;
  printf("%d",u);
  preParse(u->left);
  preParse(u->right);
}


int main(){
  int n, i, x;
  char com[20];
  scanf("%d", &n);

  for ( i = 0; i < n; i++ ){
    scanf("%s", com);
    if ( com[0] == 'f' ){
      scanf("%d", &x);
      Node t = treeSearch(root, x);
      if ( t != NIL ) printf("yes\n");
      else printf("no\n");
    } else if ( com[0] == 'i' ){
      scanf("%d", &x);
      insert(x);
    } else if ( com[0] == 'p' ){
      inorder(root);
      printf("\n");
      preorder(root);
      printf("\n");
    } else if ( com[0] == 'd' ){
      scanf("%d", &x);
      treeDelete(treeSearch(root, x));
    }
  }

  return 0;
}

Compiler output:
a.cc: In function 'void insert(int)':
a.cc:68:13: error: invalid conversion from 'void*' to 'Node' {aka 'node*'} [-fpermissive]
   68 |   z = malloc(sizeof(struct node));
      |       ~~~~~~^~~~~~~~~~~~~~~~~~~~~
      |             |
      |             void*
a.cc:74:8: error: base operand of '->' is not a pointer
   74 |   x = k->root;
      |        ^~
a.cc:82:10: error: base operand of '->' is not a pointer
   82 |         k->root = z;
      |          ^~
a.cc: In function 'void inorder(Node)':
a.cc:91:17: error: 'inorderTreeWalk' was not declared in this scope
   91 |   if (u != NIL) inorderTreeWalk(u->left);
      |                 ^~~~~~~~~~~~~~~
a.cc:93:3: error: 'inorderTreeWalk' was not declared in this scope
   93 |   inorderTreeWalk(u->right);
      |   ^~~~~~~~~~~~~~~
a.cc: In function 'void preorder(Node)':
a.cc:99:3: error: 'preParse' was not declared in this scope
   99 |   preParse(u->left);
      |   ^~~~~~~~
a.cc: In function 'int main()':
a.cc:126:7: error: 'treeDelete' was not declared in this scope
  126 |       treeDelete(treeSearch(root, x));
      |       ^~~~~~~~~~
a.cc: In function 'node* treeSuccessor(Node)':
a.cc:53:1: warning: control reaches end of non-void function [-Wreturn-type]
   53 | }
      | ^