/*/////////////////////////////////////////////////////////////////////////////
	
	File	:	node.h

	Author	:	Darren Boon

	Date	:	25/02/1997

/////////////////////////////////////////////////////////////////////////////*/

#ifndef NODE_H
#define NODE_H
template<class type>
class node
{
public:
				node(type someitem,node<type> *l,node<type> *r);
	void 		append_left(type someitem);
	void 		append_right(type someitem);
	void		store(type someitem);
	type		data();
	node<type>	*left_child();   // returns a pointer to a node
	node<type> 	*right_child();
	Bool		is_leaf();
	void		delete_leaf();
	// The traverse functions have a parameter that is a function.
	// This function has one parameter of the type TYPE and returns
	// nothing. The syntax for each of these functions is:
	// return_type function_name(return_type (*function_name)(parameter_type))
	void		inorder_traverse(void (*visit) (type));
	void		preorder_traverse(void (*visit) (type));
	void		postorder_traverse(void (*visit) (type));

	node<type>	*lptr,*rptr;
	type		item;
};

#endif
