Example #1
0
 bool AddRegion(FreeRegion region) {
   while (!addressedTree.Add(AddressedRegion(region))) {
     if (!failureHandler(this)) {
       return false;
     }
   }
   while (!sizedTree.Add(SizedRegion(region))) {
     if (!failureHandler(this)) {
       // Avoid having inconsistent trees (although the region will leak).
       addressedTree.Remove(AddressedRegion(region));
       return false;
     }
   }
   return true;
 }
Example #2
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;
}
Example #3
0
int main()
{
    Tree<int> tree;
    int n = 0;
    cin >> n;
    int value = 0;
    for(int i = 0; i < n; i++) {
        cin >> value;
        tree.Add(value);
    }
    tree.inOrderPrint();
    //cout << tree.Height();
    return 0;
}
Example #4
0
int main()
{
    Tree<int> tree;
    Treap<int> treap;
    int n = 0;
    cin >> n;
    int value = 0;
    int priority = 0;
    for(int i = 0; i < n; i++) {
        cin >> value >> priority;
        tree.Add(value);
        treap.Add(value, priority);
    }
    
    cout << tree.Height() - treap.Height();
    
    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;
}
Example #6
0
int main()
{
	Tree<int> tree;
	
	tree.Add(987,12);
	tree.Add(665,5);
	tree.Add(714,3);
	tree.Add(215,10);
	tree.Add(890,7);
	tree.Add(531,11);
	tree.Add(920,6);
	tree.Add(110,9);
	
	cout << "Tree height : " << tree.GetHeight() << endl
	<< "There are " << tree.GetNodesOnLevel(2) << " nodes on 3rd level." << endl;
	
	cout << "Tree element with key " << 7 << " is: " << endl;
	tree.PrintInfo(7);
	
	_getch();
	return 0;
}
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));
//		}
//
//
//	}

}