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; }
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; }
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; }
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; }
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)); // } // // // } }