All pastes #1544826 Raw Edit

Stuff

public cpp v1 · immutable
#1544826 ·published 2009-08-27 16:58 UTC
rendered paste body
#include<iostream.h>#include<conio.h>#include<stdlib.h>struct  Node{	Node *left;	int data;	Node *right;};const MAX=10;class Stack{	Node *a[MAX];	int top;     public:	Stack()	{	     top=-1;	}	void Push(Node*);	Node* Pop(void);};void Stack::Push(Node *item){	if(top==MAX-1)	{	   cout << "stack is full";	   return;	}	top++;	a[top]=item;}Node* Stack::Pop(void){	if(top==-1)	{	  cout << "STACK IS EMPTY";	  return NULL;	}	Node *item=a[top];	top--;	return item;}class Tree:Stack{	    Node *t;	public:	    Tree():Stack()	    {		  t=NULL;	    }	    void Insert(int);	    void PreOrder(void);	    void InOrder(void);	    void PostOrder(void);};void Tree::Insert(int item){	Node *jk=t,*save=t;	while(jk!=NULL)	{		if(jk->data > item)		{			save=jk;			jk=jk->left;		}		else if(jk->data < item)		{			save=jk;			jk=jk->right;		}		else  return;	}	Node *temp=new Node;	temp->left=NULL;	temp->data=item;	temp->right=NULL;	if(t==NULL) // if insertion at root node	   t=temp;	else if(save->data > item)	   save->left=temp;	else	   save->right=temp;}void Tree::PreOrder(void){	Push(NULL);  // initialise the stack used for sentinal	Node *jk=t;	JAGGS:	while(jk!=NULL)	{		cout << "  " << jk->data;		if(jk->right!=NULL)		    Push(jk->right);		jk=jk->left;	}	jk=Pop();	if(jk!=NULL)	    goto JAGGS;	else return;}void Tree::InOrder(void){	Push(NULL);	Node *jk=t;	JAGGS:	while(jk!=NULL)	{		Push(jk);		jk=jk->left;	}	jk=Pop();	while(jk!=NULL)	{		cout << "  " << jk->data;		if(jk->right!=NULL)		{			jk=jk->right;			goto JAGGS;		}		else		   jk=Pop();	}}void Tree::PostOrder(void){	Push(NULL);	Node *jk=t;	JAGGS:	while(jk!=NULL)	{		Push(jk);		if(jk->right!=NULL)		   Push(-(jk->right));		jk=jk->left;	}	jk=Pop();	while(int(jk)>0)	{		cout << "  " << jk->data;		jk=Pop();	}	if((int)jk<0)	{		jk=-jk;		goto JAGGS;	}}void main(){	Tree T;	clrscr();	int num,cho=1,cnt;	//char cho;	cout << "HOW MANY ELEMENTS FOR TREE CONSTRUCTION\n";	cin >> cnt;	while(cho<=cnt)	{		cin >> num;		T.Insert(num);		cho++;	}	cout << "\n\nPREORDER TRAVERSAL\n\n";	T.PreOrder();	cout << "\n\nINORDER TRAVERSAL\n\n";	T.InOrder();	getch();}