Language: C

#include <stdio.h>
#include <stdlib.h>
#define A NULL
????
struct node{
????struct node *left;
????struct node *right;
????struct node *parent;
????int key;
};
typedef struct node * Node;
Node root;
????
Node treeMinimum(Node x){
????while(x->left != A){
????????x = x->left;
????}
????return x;
}
????
Node treeSearch(Node u, int k){
????while(u != A && k != u->key){
????????if(k < u->key){
????????????u = u->left;
????????}else{
????????????u = u->right;
????????}
????}
????return u;
}
????
Node treeSuccessor(Node x){
????Node y;
????if(x->right != A) return treeMinimum(x->right);
????y = x->parent;
????
????while(y !=A && x == y->right){
????????x = y;
????????y = y->parent;
????}
????return y;
}
????
??
????
void inorder(Node u){
????if(u != A){
????????if(u->left != A) inorder(u->left);
????????printf(" %d", u->key);
????????if(u->right != A) inorder(u->right);
????}
}
????
void preorder(Node u){
????if(u != A){
????????printf(" %d", u->key);
????????if(u->left != A) preorder(u->left);
????????if(u->right != A) preorder(u->right);
????}
}
????
int main(){
????int y, i, x;
????char com[20];
????scanf("%d", &y);
????????
????for ( i = 0; i < y; i++ ){
????????scanf("%s", com);
????????if ( com[0] == 'f' ){
????????????scanf("%d", &x);
????????????Node t = treeSearch(root, x);
????????????if ( t != A ) 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;
}
void treeDelete(Node z){
????Node y; // node to be deleted
????Node x; // child of y
????
????if(z->left == A || z->right == A) y = z;
????else y = treeSuccessor(z);
????
????if(y->left != A) x = y->left;
????else x = y->right;
????
????if(x != A) x->parent = y->parent;
????if(y->parent == A) root = x;
????else if( y == y->parent->left) y->parent->left = x;
????else y->parent->right = x;
????
????if(y != z) z->key = y->key; 
}
????
void insert(int k){
????Node y = A;
????Node x = root;
????Node z;
????z = malloc(sizeof(struct node));
????z->key = k;
????z->left = A;
????z->right = A;
????
????while(x != A){
????????y = x;
????????if(z->key < x->key){
????????????x = x->left;
????????}else{
????????????x = x->right;
????????}
????}
????z->parent = y;
????if(y == A){
????????root = z;
????}else if(z->key < y->key){
????????y->left = z;
????}else{
????????y->right = z;
????}
}

Compiler output:
main.c:4:1: error: expected identifier or '(' before '?' token
    4 | ????
      | ^
main.c:13:1: error: expected identifier or '(' before '?' token
   13 | ????
      | ^
main.c:20:1: error: expected identifier or '(' before '?' token
   20 | ????
      | ^
main.c:31:1: error: expected identifier or '(' before '?' token
   31 | ????
      | ^
main.c:43:1: error: expected identifier or '(' before '?' token
   43 | ????
      | ^
main.c:53:1: error: expected identifier or '(' before '?' token
   53 | ????
      | ^
main.c:61:1: error: expected identifier or '(' before '?' token
   61 | ????
      | ^
main.c: In function 'treeDelete':
main.c:91:1: error: expected expression before '?' token
   91 | ????Node y; // node to be deleted
      | ^
main.c:92:1: error: expected expression before '?' token
   92 | ????Node x; // child of y
      | ^
main.c:93:1: error: expected expression before '?' token
   93 | ????
      | ^
main.c:95:1: error: expected expression before '?' token
   95 | ????else y = treeSuccessor(z);
      | ^
main.c:96:1: error: expected expression before '?' token
   96 | ????
      | ^
main.c:98:1: error: expected expression before '?' token
   98 | ????else x = y->right;
      | ^
main.c:99:1: error: expected expression before '?' token
   99 | ????
      | ^
main.c:101:1: error: expected expression before '?' token
  101 | ????if(y->parent == A) root = x;
      | ^
main.c:102:1: error: expected expression before '?' token
  102 | ????else if( y == y->parent->left) y->parent->left = x;
      | ^
main.c:103:1: error: expected expression before '?' token
  103 | ????else y->parent->right = x;
      | ^
main.c:104:1: error: expected expression before '?' token
  104 | ????
      | ^
main.c: At top level:
main.c:107:1: error: expected identifier or '(' before '?' token
  107 | ????
      | ^