I am doing a binary search tree. I need some hints on how to do the insert and find. Anyone?


Code:
#include <stdio.h>
#define MAX_SIZE 32    /* should be a power of two */
#define EMPTY -1       /* special value to indicate empty node */

typedef int tree [MAX_SIZE];
/* Defines 'tree' as the type of an array of MAX_SIZE integers. */

void initialize_tree (tree t)
{
  int i;
  for( i = 0;  i < MAX_SIZE;  i++ )
    {
      t[i] = -1;
    }
}

void print_tree(tree t)
{
  int i;
  for(i = 1;  i < MAX_SIZE;  i++)
    {
      if(t[i] == EMPTY) { printf(". "); }
      else { printf("%d ", t[i]); }
    }
  printf("\n");
}

void bst_insert(tree t, int v)
{
  /*** HERE  ***/

}

int bst_find(tree t, int v)  /* return 1 if found, 0 if not */
{

  /*** HERE ***/
  return 0;
}

int ask_for_number()
{
  int x;
  printf("Enter an integer, or %d to quit.\n", EMPTY);
  scanf("%d", &x);
  return x;
}

int main()
{
  tree t;
  int x;

  initialize_tree(t);
  x = ask_for_number();
  while(x != EMPTY)
    {
      bst_insert(t, x);
      print_tree(t);
      x = ask_for_number();
    }
  printf("DONE INSERTING.  Now you may query.\n");
  x = ask_for_number();
  while(x != EMPTY)
    {
      if(bst_find(t, x)) { printf("FOUND.\n"); }
      else { printf("NOT FOUND.  :(\n"); }
      x = ask_for_number();
    }
  return 0;
}