C: Print specific fields from a structure

Homework Statement

Define a structure VEHICLE which contains producer, model and chassis number. Store the content of a structure in binary search tree such that the key for storing contains all fields of a structure (producer has the highest priority, and chassis number has the lowest). Print data about all vehicles from the specific producer (which is read after all input content).

Homework Equations

3. The Attempt at a Solution [/B]
I have defined the following:
-Data structure for vehicle and binary search tree
-Functions for reading data, adding data to binary tree, searching by key.
Code:
Code:
typedef struct
{
char prod[100];
char mod[100];
char chs[100];
}VEHICLE;

typedef struct node
{
VEHICLE ve;
struct node *left,*right;
}NODE;

NODE *form_node(VEHICLE *ve)
{
NODE *node=(NODE *)malloc(sizeof(NODE));
node->left=node->right=0;
node->ve=*ve;
return node;
}

{
if(root==0)
return form_node(ve);
if(strcmp(ve->prod,root->ve.prod)<0 ||
((strcmp(ve->prod,root->ve.prod)==0) &&
strcmp(ve->mod,root->ve.mod)<0) ||
(strcmp(ve->prod,root->ve.prod)==0 &&
strcmp(ve->mod,root->ve.mod)==0 &&
strcmp(ve->chs,root->ve.chs)<0))
else
return root;
}

NODE *searching(NODE *root,VEHICLE *ve)
{
if(root == 0)
return NULL;
else if(strcmp(ve->prod,root->ve.prod)==0 &&
strcmp(ve->mod,root->ve.mod)==0 &&
strcmp(ve->chs,root->ve.chs)==0)
return root;
else if(strcmp(root->ve.prod,ve->prod)>0 &&
strcmp(root->ve.mod,ve->mod)>0 &&
strcmp(root->ve.chs,ve->chs)>0)
return searching(root->left,ve);
else
return searching(root->left,ve);
}

{
printf("producer:");
scanf("%s",ve->prod);
printf("model:");
scanf("%s",ve->mod);
printf("chassis number:");
scanf("%s",ve->chs);
}

How to implement a function that prints data about vehicles from specified input producer?