コード例 #1
0
ファイル: bst_test.cpp プロジェクト: deanmarc25/bst
int main()
{
	BST bst;
	
	if(bst.Empty())
		cout << "BST::Empty() works" << endl;
	else
		cout << "BST::Empty() doesn't work" << endl;
		
	bst.Insert(0);
	
	if(!bst.Empty())
		cout << "BST::Empty() works" << endl;
	else
		cout << "BST::Empty() doesn't work" << endl;
		
	if(bst.Delete(0))
		cout << "BST::Delete(const int) works" << endl;
	else
		cout << "BST::Delete(const int) doesn't work" << endl;
		
	if(!bst.Delete(-1))
		cout << "BST::Delete(const int) works" << endl;
	else
		cout << "BST::Delete(const int) doesn't work" << endl;
	
	for(int i = 0; i < 10; i++)
		bst.Insert(i);
		
	cout << bst.Min() << endl;
	cout << bst.Max() << endl;
	
	if(bst.SearchIter(0) && !bst.SearchIter(10))
		cout << "BST::SearchIter(const int) works" << endl;
	else
		cout << "BST::SearchIter(const int) doesn't work" << endl;
		
	if(bst.SearchRec(0) && !bst.SearchRec(10))
		cout << "BST::SearchRec(const int) works" << endl;
	else
		cout << "BST::SearchRec(const int) doesn't work" << endl;
		
	bst.Clear();
	
	if(bst.Empty())
		cout << "BST::Empty() works" << endl;
	else
		cout << "BST::Empty() doesn't work" << endl;

	return 0;

} // end main()
コード例 #2
0
void closeAccount(BST<int> B)
{
	int id;
	cout << "\tEnter the ID number of the account you wish to close: ";
	cin >> id;
	B.Delete(id);
	cout << "\tAccount " << id << " is now closed." << endl;
}
コード例 #3
0
ファイル: main.cpp プロジェクト: jaeen1113/HW_Project
void main() // key(pair사용시 data.first) = 노드의 이름 같은 개념,  element(pair 사용시 data.second)  = 노드의 고유 data
{
	//declare the type of K, E
	typedef  int K;
	typedef char E;
	BST<K, E> HWbst;	// Making BST class HWbst  link every nodes

	int menu = 0;
	while (1)
	{
		//   Menu   //
		cout << endl << " #### Choose Menu ####" << endl;
		cout << "1. Insert      2. Delete      3. Print      4. Exit" << endl;
		cin >> menu;
		switch (menu)
		{
			case 1: // Insert Menu
			{
					  
					  pair<K, E> A;  // new node's pair type data
					  cout << " *** 새로운 TreeNode의 Key : ";
					  cin >> A.first;
					  cout << " *** 새로운 TreeNode의 Element : ";
					  cin >> A.second;

					  HWbst.Insert(A); // use insert function
					  break;
					  
			}
			case 2: // Delete Menu
			{	
					  int a = 0;
					  cout << " *** 삭제할 노드의 Key 입력  :  ";
					  cin >> a;
					  HWbst.Delete(a);
					  break;
			}
			case 3: // Print all nodes by level order
			{
					  HWbst.Print();
					  break;
			}
			case 4:  // close this program
			{
					  return;
			}
		}
	}
	
}
コード例 #4
0
ファイル: BSTdeleting.cpp プロジェクト: vjain05/CSE100labs
int main(int argc,char **argv)
{
  // Create an empty Binary Search Tree
  BST Tree;
  string input;
  cin>>input;
  while(input!="ENDINSERT"){
	Tree.Insert(input);
	
	cin>>input;
  }
  //Tree.Print("POST");
  //cout<<"transition"<<endl;
  cin>>input;
  while(input!="ENDDELETE"){
		Tree.Delete(input);
	  cin>>input;
  }
  Tree.Print("POST");
}
コード例 #5
0
int _tmain(int argc, _TCHAR* argv[])
{
	//Binary Search Tree
	int bstArraySize = 11;		
	int bstArray[] = { 15, 6, 18, 3, 7, 17, 20, 2, 13, 4, 9 };
	cout << "BST Input Array: " ;
	PrintArray(bstArray, bstArraySize);

	BST myBST;
	for (int i = 0; i < bstArraySize; i++)
		myBST.Insert(myBST.root, bstArray[i]);

	cout << "InOrderTreeWalk: ";
	myBST.InOrderTreeWalk(myBST.root);
	cout << endl;

	cout << "PreOrderTreeWalk: ";
	myBST.PreOrderTreeWalk(myBST.root);
	cout << endl;

	cout << "PostOrderTreeWalk: ";
	myBST.PostOrderTreeWalk(myBST.root);
	cout << endl;

	myBST.Search(myBST.root, 100);
	myBST.Search(myBST.root, 20);
	myBST.Maximum(myBST.root);
	myBST.Minimum(myBST.root);
	myBST.SearchParent(myBST.root, 9);

	cout << "Delete Node 15: ";
	myBST.Delete(myBST.root, 15);	
	myBST.InOrderTreeWalk(myBST.root);
	cout << endl;
	cout << endl;

	//Max Heap
	int table[] = {16, 4, 10, 14, 7, 9, 3, 2, 8, 1, 0, 0, 0, 0};
	int heapSize = 10;
	int* maxHeapArray = new int[15];

	for (int i = 0; i < heapSize; i++)
		*(maxHeapArray + i) = table[i];
	cout << "Max-Heap: ";
	PrintArray(maxHeapArray, heapSize);
	MaxHeap myMaxHeap;
	myMaxHeap.MaxHeapify(maxHeapArray, heapSize, 1);
	cout << "Max-Heapified 1: ";
	PrintArray(maxHeapArray, heapSize);

	for (int i = 0; i < heapSize; i++)
		*(maxHeapArray + i) = table[i];
	cout << "Max-Heap: ";
	PrintArray(maxHeapArray, heapSize);
	myMaxHeap.BuildHeap(maxHeapArray, heapSize);
	cout << "BuildHeap: ";
	PrintArray(maxHeapArray, heapSize);
	cout << "HeapExtractMax: " << myMaxHeap.HeapExtractMax(maxHeapArray, heapSize) << endl;
	cout << "Remaining: ";		
	PrintArray(maxHeapArray, heapSize - 1);
	cout << "HeapInsert 32: \n";
	myMaxHeap.HeapInsert(maxHeapArray, heapSize - 1, 32);
	cout << "New Heap: ";
	PrintArray(maxHeapArray, heapSize);

	for (int i = 0; i < heapSize; i++)
		*(maxHeapArray + i) = table[i];
	cout << "Max-Heap: ";
	PrintArray(maxHeapArray, heapSize);
	myMaxHeap.HeapSort(maxHeapArray, heapSize);
	cout << "HeapSort: ";
	PrintArray(maxHeapArray, heapSize);
	cout << endl;

	//AVL tree
	int avlArraySize =11;
	//int avlArray[] = { 15, 6, 18, 3, 7, 17, 20, 2, 13, 4, 9 };
	int avlArray[] = { 30, 50, 40, 60, 70, 17, 20, 2, 13, 4, 9 };
	cout << "AVL Input Array: ";
	PrintArray(avlArray, avlArraySize);
	AVL myAVL;
	for (int i = 0; i < avlArraySize; i++)
	{
		myAVL.Insert(myAVL.root, avlArray[i]);
		myAVL.InOrderTreeWalk(myAVL.root);
		cout << endl;
	}

	cout << "Delete 30: \n";
	myAVL.Delete(myAVL.root, 30);
	myAVL.InOrderTreeWalk(myAVL.root);
	cout << endl;

	cout << "Delete 13: \n";
	myAVL.Delete(myAVL.root, 13);
	myAVL.InOrderTreeWalk(myAVL.root);
	cout << endl;

	cout << "Delete 20: \n";
	myAVL.Delete(myAVL.root, 20);
	myAVL.InOrderTreeWalk(myAVL.root);
	cout << endl;

	//RB tree
	int rbArraySize = 11;
	//int rbArray[] = { 1, 3, 2, 4, 5, 6, 8, 7, 9, 10, 11 };
	int rbArray[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
	cout << "RB Input Array: ";
	PrintArray(rbArray, rbArraySize);

	RB myRB;
	for (int i = 0; i < rbArraySize; i++)
	{
		myRB.Insert(myRB.root, myRB.root, rbArray[i]);
		myRB.InOrderTreeWalk(myRB.root);
		cout << endl;
	}

	RB myRB2;
	myRB2.Insert(myRB2.root, myRB2.root, 50);
	myRB2.Insert(myRB2.root, myRB2.root, 20);
	myRB2.Insert(myRB2.root, myRB2.root, 30);
	myRB2.Insert(myRB2.root, myRB2.root, 40);
	myRB2.Insert(myRB2.root, myRB2.root, 45);
	myRB2.Insert(myRB2.root, myRB2.root, 43);
	myRB2.Insert(myRB2.root, myRB2.root, 44);
	myRB2.Insert(myRB2.root, myRB2.root, 42);
	myRB2.InOrderTreeWalk(myRB2.root);
	cout << endl;
	myRB2.Delete(myRB2.root, 50);
	myRB2.InOrderTreeWalk(myRB2.root);
	cout << endl;




	//4.2 Minimal Tree : Given a sorted(increasing order) array with unique integer elements, write an
	//	algorithm to create a binary search tree with minimal height.
	int minTree[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	TreeNode* n = MinTreeInsert(minTree, 0, 9);

	//4.5 Validate BST: Implement a function to  check if a  binary tree is a binary  search  tree.
	int* valArray = new int[10];
	CopyBST(n, valArray, 10, 0);
	for (int i = 0; i < 10; i++)
		cout << i << " ";
	cout << endl;

	cout << ValidateBST(n, -1000000)<<endl;

	//4.8 First Common Ancestor: Design an algorithm and write code to find the first common ancestor 
	// of two nodes in a binary tree.Avoid storing additional nodes in a data structure.NOTE: This is not
	//necessarily a binary search tree.

	int binaryTree[] = { 3, 5, 2, 6, 9, 7, 1, 4, 8, 10};
	TreeNode* bt = MinTreeInsert(binaryTree, 0, 9);



	//4.9 BST Sequences : A binary search tree was created by traversing through an array from left to right
	//	and inserting each element.Given a binary search tree with distinct elements, print all possible
	//	arrays that could have led to this tree.
	 

	//4.1O Check Subtree : Tl and T2 are two very large binary trees, with Tl much bigger than T2.Create an
	//	algorithm to determine ifT2 is a subtree of Tl.
	//	A tree T2 is a subtree of Tl if there exists a node n in Tl such that the subtree of n is identical to T2.
	//	That is, if you cut off the tree at node n, the two trees would be identical.


	//4.11 Random Node : You are implementing a binary search tree class from scratch, which, in addition
	//	to insert, find, and delete, has a method getRandomNode() which returns a random node
	//	from the tree.All nodes should be equally likely to be chosen.Design and implement an algorithm
	//	for getRandomNode, and explain how you would implement the rest of the methods.


	getchar();

	return 0;
}