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;

void insert(int);
void inorder(Node);
void preorder(Node);
Node treeSearch(Node,int);
Node treeMinimum(Node);
void treeDelete(Node);
Node treeSuccessor(Node);

Node treeSuccessor(Node x){
????if(x->right != NIL)
????????return treeMinimum(x->right);
????Node y = x->parent;
????while(y != NIL && x == y->right){
????????x = y;
????????y = y->parent;
????}
????return y;
??????
}
void treeDelete(Node z){
  Node y;
  Node x;

  if( z->left == NIL || z->right == NIL ) y = z;
  else y = treeSuccessor(z);

  if( y->left != NIL ) x = y->left;
  else x = y->right;

  if(x != NIL) x->parent = y->parent;

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

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

Node treeSearch(Node z, int k) { // ?????°?????¨?????? key ??¨ node ?????°????????´????????????????????? node surabata????????????
  if( z == NIL || k == z->key ) {
    return z;
  }
  if( k < z->key ) {
    return treeSearch( z->left,k);
  }
  else{
    return treeSearch( z->right,k);
  }
}
 
void insert(int k){
  Node y = NIL;  //x??????
  Node x = root; //T??????
  Node z;
 
  z = (Node)malloc(sizeof(struct node));
  z->key = k;
  z->left = NIL;
  z->right = NIL;
 
  while(x != NIL){
    y = x; // ???????¨????
    if( z->key < x->key ) x = x->left;
    else x = x->right;
  }
  z->parent = y;
  if(y == NIL) root = z; 
  else if( z->key < y->key ) y->left = z;
  else y->right = z;

}
 
void inorder(Node z){ // ????????????????????????
  if( z->left != NIL ) inorder( z->left );
  printf(" %d",z->key);
  if( z->right != NIL ) inorder( z->right );
}

void preorder(Node z){ // ????????????????????????
  printf(" %d",z->key);
  if( z->left != NIL ) preorder(z->left);
  if( z->right != NIL ) preorder(z->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] == 'i' ){
      scanf("%d", &x);
      insert(x);
    } 
    else if ( com[0] == 'p' ){
      inorder(root);
      printf("\n");
      preorder(root);
      printf("\n");
    } 
    else if ( com[0] == 'f' ){
      scanf("%d", &x);
      Node t = treeSearch(root, x);
      if ( t != NIL ) printf("yes\n");
      else printf("no\n");
    }
  }
  return 0;
}

Compiler output:
main.c: In function 'treeSuccessor':
main.c:24:1: error: expected expression before '?' token
   24 | ????if(x->right != NIL)
      | ^
main.c:26:1: error: expected expression before '?' token
   26 | ????Node y = x->parent;
      | ^
main.c:27:1: error: expected expression before '?' token
   27 | ????while(y != NIL && x == y->right){
      | ^
main.c:32:1: error: expected expression before '?' token
   32 | ??????
      | ^
main.c: In function 'treeMinimum':
main.c:54:27: error: 'x' undeclared (first use in this function)
   54 |   while( z->left != NIL ) x = x->left;
      |                           ^
main.c:54:27: note: each undeclared identifier is reported only once for each function it appears in