int main(){
	Tree mTree;
	mTree.setHead();
	mTree.CreateTree(mTree.head,32);			//expected height of the tree	is 33.
	int Q; 
	string s;
	int num;
	for(int i=0;i<Q;i++){
		cin>>s;
		cin>>num;
		switch (s[0]){
		case 'a':		//add
			mTree.Insert(num);			
			break;
		case 'd':		//delete
			mTree.Delete(num);
			break;
		case 'c':		//count
			mTree.TotalCount=0;
			mTree.GetCount(mTree.head,num);
			cout<<mTree.TotalCount<<endl;			
			break;
		}
	}


	return 0;
}
Example #2
0
void main()
{
	Tree t;
	int ch=0,x;
	while(ch!=6)
	{
		cout<<"\n\n----Tree----\n";
		cout<<"\n1.Inorder";
		cout<<"\n2.Preorder";
		cout<<"\n3.Postorder";
		cout<<"\n4.Insert";
		cout<<"\n5.Delete";
		cout<<"\n6.Exit";
		cout<<"\nEnter the choice :";
		cin>>ch;
		switch(ch)
		{
		case 1:
			cout<<"\nInorder  : ";
			t.Inorder();
			break;

		case 2:
			cout<<"\nPreorder :";
			t.Preorder();
			break;
		case 3:
			cout<<"\nPostorder:";
			t.Postorder();
			break;
		case 4:
			cout<<"\nEnter the data:";
			cin>>x;
			t.Insert(x);
			break;
		case 5:
			cout<<"\nEnter the data:";
			cin>>x;
			t.Delete(x);
			break;
		}
	}
	
	

}
Example #3
0
int _tmain(int argc, _TCHAR* argv[])
{
	Tree<int>* tr = new Tree<int>();
	tr->Add(123, "abcdef");
	tr->Add(456, "abde");
	tr->Add(789, "aaaa");
	tr->Add(145, "a");
	tr->Add(464, "ab");
	tr->Print("Tree");
	cout << endl;
	tr->Add(444, "a");
	cout << endl;
	tr->Find("abde");
	cout << endl;
	tr->Delete("abde");
	tr->Print("After deleting record (key - abde)");
	getchar();
	return 0;
}
void  menu()
{
	Tree *tree = new Tree;
	char c;
	do
	{
		printf("1: View\n");
		printf("2: Find\n");
		printf("3: Add\n");
		printf("4: Del\n");
		printf("5: Clear\n");
		printf("\nEsc: Exit\n");
		c = getch();
		switch(c)
		{
		case '1': 
			cout << "Print:";
			tree->Print();
			cout << endl; break;
		case '2': 
			cout << "Find:";
			int val;
			cin >> val;
			bool flag;
			flag = tree->Exists(val); 
			cout << (flag == true ? "true" : "false") << endl; break;
		case '3': 
			cout << "Add:";
			int add;
			cin >> add;
			tree->Add(add); cout << endl; break;
		case '4': 
			cout << "Delete:";
			int del;
			cin >> del;
			tree->Delete(del); cout << endl; break;
		case '5': tree->Clear();  cout << endl; break;
		}
	} while(c != 27);
	delete tree;
}
int main(){
	Tree t;

	(t.Root) = new node;
	t.Root->value=8;
	t.Root->parent = t.Root;

	//Initialize Full Tree
	t.Add(8);
	t.New(4,*((t.Root)),0);
	t.New(2,(*(t.Root)->L),0);
	t.New(6,(*(t.Root)->L),1);
	t.New(12,*((t.Root)),1);
	t.New(10,(*(t.Root)->R),0);
	t.New(14,(*(t.Root)->R),1);
	t.New(1,(*(t.Root)->L->L),0);
	t.New(3,(*(t.Root)->L->L),1);
	t.New(5,(*(t.Root)->L->R),0);
	t.New(7,(*(t.Root)->L->R),1);
	t.New(9,(*(t.Root)->R->L),0);
	t.New(11,(*(t.Root)->R->L),1);
	t.New(13,(*(t.Root)->R->R),0);
	t.New(15,(*(t.Root)->R->R),1);
	cout<<"\n# Original Tree :"<< endl;
	t.DisplayTree();
	avg_num=0;
	avg_total=0;

	//Search Operations
	for (int i=15;i>0;i--){
		t.Search(i);
	}
	int avg_total1 = avg_total;
	int avg_num1 = avg_num;
	avg_total=0;
	avg_num=0;

	//Delete Operations
	t.Delete(15);
	t.Delete(14);
	t.Delete(4);
	t.Delete(5);
	t.Delete(1);

	cout<<"\nAverage Rotations for Search Operation:"<<(float)avg_total1/avg_num1;
	cout<<"\nAverage Rotations for Delete Operation:"<<(float)avg_total/avg_num;
//	int a;
//	cout<< "Root :";
//	t.DisplayNode( *(t.Root));
//	node* m =(t.Root);
//	while(1){
//		cout<<endl<<"Enter Selection :";
//		cin>>a;
//		if(a==1){
//			cout<<"Add :";
//			cin>>a;
//			t.Add(a);
//			m =(t.Root);
//		}
//		else if(a==2){//Delete
//			cout<<"Delete :";
//			cin>>a;
//			t.Delete(a);
//			m =(t.Root);
//		}
//		else if(a==3){//Current
//			t.DisplayNode(*m);
//		}
//		else if(a==4){//Root
//			cout<<"Root :";
//			t.DisplayNode( *(t.Root));
//		}
//		else if(a==5){//Left
//			m=(*m).L;
//			t.DisplayNode( *(m));
//		}
//		else if(a==6){//Right
//			m=(*m).R;
//			t.DisplayNode( *(m));
//		}
//		else if(a==7){//Up
//			m=(*m).parent;
//			t.DisplayNode( *(m));
//		}
//
//
//	}

}