/*
 * trial.c
 *
 * test out btree.h
 */

#include "btree.h"
#include <stdio.h>

void in_order(node_ptr tree);
void pre_order(node_ptr tree);
void post_order(node_ptr tree);

void main ()
{
   node_ptr tree, position;
   
   tree = T_new('+');		        /* make a tree of an equation */
   T_new_child(tree, T_LEFT, '1');
   T_new_child(tree, T_RIGHT,'/');
   position = T_next(tree, T_RIGHT);
   T_new_child(position, T_LEFT, '-');
   T_new_child(position, T_RIGHT, '+');
   position = T_next(position, T_LEFT);
   T_new_child(position, T_LEFT, '2');
   T_new_child(position, T_RIGHT, '*');
   position = T_next(position, T_RIGHT);
   T_new_child(position, T_LEFT, 'x');
   T_new_child(position, T_RIGHT, 'y');
   position = T_next(T_previous(T_previous(position)), T_RIGHT);
   T_new_child(position, T_LEFT, 'x');
   T_new_child(position, T_RIGHT, 'y');

   printf("\ninorder: ");
   in_order(tree);
   printf("\npreorder: ");
   pre_order(tree);
   printf("\npostorder: ");
   post_order(tree);
   printf("\n");
}

void post_order(node_ptr tree) {

   if (T_next(tree, T_LEFT) != T_END)
      post_order(T_next(tree, T_LEFT));
   if (T_next(tree, T_RIGHT) != T_END)
      post_order(T_next(tree, T_RIGHT));
   printf("%c",T_retrieve(tree));

}
void in_order(node_ptr tree) {

   if (T_next(tree, T_LEFT) != T_END)
      in_order(T_next(tree, T_LEFT));
   printf("%c",T_retrieve(tree));
   if (T_next(tree, T_RIGHT) != T_END)
      in_order(T_next(tree, T_RIGHT));

}
void pre_order(node_ptr tree) {

   printf("%c",T_retrieve(tree));
   if (T_next(tree, T_LEFT) != T_END)
      pre_order(T_next(tree, T_LEFT));
   if (T_next(tree, T_RIGHT) != T_END)
      pre_order(T_next(tree, T_RIGHT));

}


