Example #1
0
// 트리 출력
void blackHeight(Tree *RBT, Node *node, int height)
{

	if (node->color == BLACK) height++;
	if (node->left != RBT->NIL)
	{
		blackHeight(RBT, node->left, height);
	}
	if (node->right != RBT->NIL)
	{
		blackHeight(RBT, node->right, height);
	}
	if (node->left == RBT->NIL && node->right == RBT->NIL) printf("%s, %d\n", node->data->name, height);
	return;
}
Example #2
0
void buildTree(void){
	treeADT tree=newTree();
	string userOP;
	int userInt,element;

	printf("\n**** Tree builder ****\n\n");
	while(TRUE){
		printf("(i)nsert, (d)elete, (f)ind, (p)rint, (q)uit\n");
		printf("Your choice: ");
		userOP=GetLine();
		if(StringEqual(userOP,"i")){
			printf("To end insertion enter: -1.\n");
			while(TRUE){
				printf("TreeInsert: ");
				userInt=GetInteger();
				if(userInt==-1)
					break;
				treeInsert(tree,userInt);
			}
		}
		if(StringEqual(userOP,"d")){
			printf("To end deletion enter: -1.\n");
			while(TRUE){
				printf("TreeDelete: ");
				userInt=GetInteger();
				if(userInt==-1)
					break;
				treeDelete(tree,userInt);
			}
		}
		if(StringEqual(userOP,"f")){
			printf("FindNode: ");
			userInt=GetInteger();
			element=findNode(tree,userInt);
			if(element!=NOT_FOUND)
				printf("\nFound %d in your tree! :-)\n",userInt);
			else
				printf("\nDid not find %d in your tree. :-(\n",userInt);
		}
		if(StringEqual(userOP,"p")){
			printf("\nThis is your current tree:\n\n");
			displayTreeStructure(tree);
			printf("Preorder: ");
			printTree(tree,preOrder);
			printf("Inorder: ");
			printTree(tree,inOrder);
			printf("Postorder: ");
			printTree(tree,postOrder);
			printf("\n");
			printf("Height: %d\n",treeHeight(tree));
			printf("Black-height: %d\n",blackHeight(tree));
		}
		if(StringEqual(userOP,"q")) break;
		printf("\n");
	}
	freeTree(tree);
}
Example #3
0
void structureTest(void){
	treeADT treeOrd,treeRev,treeRan;
	int TEST_SIZE;

	system("cls");
	printf("Tree Structure Tester\n\n");
	printf("Enter tree size (rec. max: 25): ");
	TEST_SIZE=GetInteger();
	if(TEST_SIZE<=0)
		Error("I refuse!");
	
	treeOrd=buildTestTreeOrdered(TEST_SIZE);
	printf("Increasing input || Tree size: %d\n\n",TEST_SIZE);
	displayTreeStructure(treeOrd);
	printf("Tree-height is: %d\n",treeHeight(treeOrd));
	printf("Black-height is: %d\n",blackHeight(treeOrd));
	printf("\n\n");
	printf("--------------------------------------------\n");
	printf("\n");
	freeTree(treeOrd);

	treeRev=buildTestTreeReversed(TEST_SIZE);
	printf("Decreasing input || Tree size: %d\n\n",TEST_SIZE);
	displayTreeStructure(treeRev);
	printf("Tree-height is: %d\n",treeHeight(treeRev));
	printf("Black-height is: %d\n",blackHeight(treeRev));
	printf("\n\n");
	printf("--------------------------------------------\n");
	printf("\n");
	freeTree(treeOrd);

	treeRan=buildTestTreeRandom(TEST_SIZE);
	printf("Random input || Tree size: %d\n\n",TEST_SIZE);
	displayTreeStructure(treeRan);
	printf("Tree-height is: %d\n",treeHeight(treeRan));
	printf("Black-height is: %d\n",blackHeight(treeRan));
	printf("\n\n");
	printf("--------------------------------------------\n");
	printf("\n");
	freeTree(treeRan);

	printf("\nPress enter to return.");
	getchar();
}