Example #1
0
void heightTest(void){
	treeADT treeOrd,treeRev,treeRan;
	int i,TEST_SIZE,NUM_OF_TESTS;
	double sum=0;

	system("cls");
	printf("Tree Height Tester\n\n");
	printf("Enter tree size: ");
	TEST_SIZE=GetInteger();
	if(TEST_SIZE<=0)
		Error("I refuse!");
	printf("Enter number of tests to run: ");
	NUM_OF_TESTS=GetInteger();
	printf("\n");
	if(NUM_OF_TESTS<=0)
		Error("I refuse!");

	printf("Random input || Tree size: %d || Number of tests: %d\n",TEST_SIZE,NUM_OF_TESTS);
	for(i=0;i<NUM_OF_TESTS;i++){
		treeRan=buildTestTreeRandom(TEST_SIZE);
		sum+=treeHeight(treeRan);
		freeTree(treeRan);
	}
	sum/=NUM_OF_TESTS;
	printf("Average height: %.2f\n\n",sum);
	sum=0;

	if(TEST_SIZE>20000){
		printf("Warning! This function uses recursion to measure height\n");
		printf("Big inputs makes it sad :-(\n");
		printf("To avoid crash, the height is just printed out.\n\n");
		printf("Increasing input || Tree size: %d\n",TEST_SIZE);
		printf("Average height: %d\n\n",TEST_SIZE);
		printf("Decreasing input || Tree size: %d\n",TEST_SIZE);
		printf("Average height: %d\n\n",TEST_SIZE);
	}
	else{
		printf("Increasing input || Tree size: %d || Number of tests: %d\n",TEST_SIZE,NUM_OF_TESTS);
		for(i=0;i<NUM_OF_TESTS;i++){
			treeOrd=buildTestTreeOrdered(TEST_SIZE);
			sum+=treeHeight(treeOrd);
			freeTree(treeOrd);
		}
		sum/=NUM_OF_TESTS;
		printf("Average height: %.2f\n\n",sum);
		sum=0;

		printf("Decreasing input || Tree size: %d || Number of tests: %d\n",TEST_SIZE,NUM_OF_TESTS);
		for(i=0;i<NUM_OF_TESTS;i++){
			treeRev=buildTestTreeReversed(TEST_SIZE);
			sum+=treeHeight(treeRev);
			freeTree(treeRev);
		}
		sum/=NUM_OF_TESTS;
		printf("Average height: %.2f\n\n",sum);
		sum=0;
	}
	printf("\nPress enter to return.");
	getchar();
}
Example #2
0
//Frees memory
void freeTree(node *ptr){
	if (ptr != NULL) {
		freeTree(ptr->left);
		freeTree(ptr->right);
		free(ptr);
	}
}
Example #3
0
bool testCase(int *num, int numsSize) {
    struct TreeNode *root = buildTree(num, numsSize);
    showTree(root);

    // How to use serialize and deserialize
    char *data = serialize(root);
    struct TreeNode *node = deserialize(data);

    printf("serialize to [%s]\n", data);
    bool r = eqTree(root, node);
    printf("deserialize to\n");
    if (!r) {
        showTree(node);
    } else {
        printf("same\n");
    }
    printf("%s\n", expect(r));

    freeTree(root);
    freeTree(node);
    if (data) {
        free(data);
    }
    return r;
}
Example #4
0
void freeTree(ANode * tree)
{
    Node<Outlook> * o = dynamic_cast<Node<Outlook> *>(tree);
    Node<Temperature> *  t = dynamic_cast<Node<Temperature> *>(tree);
    Node<Humidity> * h = dynamic_cast<Node<Humidity> *>(tree);
    Node<Wind> * w = dynamic_cast<Node<Wind> *>(tree);
    
    if (o != NULL)
    {
        std::map<Outlook, ANode *>::iterator it = o->getChilds().begin();
        for (; it != o->getChilds().end(); ++it)
            freeTree(it->second);
    }
    else if (t != NULL)
    {
        std::map<Temperature, ANode *>::iterator it = t->getChilds().begin();
        for (; it != t->getChilds().end(); ++it)
            freeTree(it->second);
    }
    else if (h != NULL)
    {
        std::map<Humidity, ANode *>::iterator it = h->getChilds().begin();
        for (; it != h->getChilds().end(); ++it)
            freeTree(it->second);
    }
    else if (w != NULL)
    {
        std::map<Wind, ANode *>::iterator it = w->getChilds().begin();
        for (; it != w->getChilds().end(); ++it)
            freeTree(it->second);
    }
    delete tree;
}
Example #5
0
void freeTree( Tree * t ) {
	if( !t ) return;
	
	freeTree( t->left );
	freeTree( t->right );
	free( t );
}
Example #6
0
/* Free tree */
void freeTree(queue *root){
	if(root == NULL)
		return;
	freeTree(root->left);
	freeTree(root->right);
	free(root);
}
Example #7
0
void freeTree(Sprig* thisSprig) {
	if (thisSprig == NULL) return;
	//free childSprigs first
	freeTree(thisSprig->leftSprig);
	
	int i = numLeaves(thisSprig);
	Leaf* curr = thisSprig->firstLeaf;
	for (; i>0; i--) {
		freeTree(curr->childSprig);
		curr = curr->nextLeaf;
	}
	
	//then free leaves in own scope
	curr = thisSprig->firstLeaf;
	Leaf* next = curr->nextLeaf;
	for(i=numLeaves(thisSprig); i>0; i--) {
		free(curr);
		curr = next;
		if (curr != NULL) next = curr->nextLeaf;
	}
	
	//then free self
	free(thisSprig);
	
	return;
}
Example #8
0
void freeTree(HuffmanNode* node) {
    if(node != nullptr){
        freeTree(node->zero);
        freeTree(node->one);
        delete node;
    }
}
Example #9
0
// Frees a condition and all of it's sub conditions
void freeTree(Condition* c)
{
	if (c->lhs) freeTree(c->lhs);
	if (c->rhs) freeTree(c->rhs);

	free(c);
}
Example #10
0
void freeTree(avlNode **node){
    if(*node){
        freeTree(&(*node)->left);
        freeTree(&(*node)->right);
        free(*node);
    }
}
Example #11
0
void testIsEquiv()
{
    printf("###########################\n");
    printf("Test 5. is_equiv: ");
    BTree *t1 = testTree1();
    BTree *t2 = testTree2();
    if (isEquivBTree(t1, t2)){
        printf("NOK - B-stromy nejsou ekvivalentni, nemaji shodnou aritu\n");
    }else{
        freeTree(t1); freeTree(t2);
        t1 = testTree2();
        t2 = testTree4();
        if (isEquivBTree(t1, t2)){
            printf("NOK - B-stromy nejsou ekvivalentni, nemaji shodne hodnoty\n");
        }else{
            freeTree(t1);
            t1 = testTree2();
            if (isEquivBTree(t1, t1)){
                printf("OK\n");
            }else{
                printf("NOK - B-stromy jsou ekvivalentni\n");
            }
        }
    }
    freeTree(t1); freeTree(t2);
}
Example #12
0
void QMapDataBase::freeTree(QMapNodeBase *root, int alignment)
{
    if (root->left)
        freeTree(root->left, alignment);
    if (root->right)
        freeTree(root->right, alignment);
    qMapDeallocate(root, alignment);
}
void freeTree(TreeNode *T, Tree * Tr) {
    if (T->left != NULL)
        freeTree(T->left,Tr);
    if (T->right != NULL)
        freeTree(T->right,Tr);
    Tr->destroyValue(T->value);
    free(T);
}
Example #14
0
void freeTree(Ast* temp) {
	if ( temp ) {
		Ast* left = temp->getLeft();
		Ast* right = temp->getRight();
		delete temp;
		freeTree(left);
		freeTree(right);
	}
}
Example #15
0
File: ast.c Project: LaurenceGA/arm
void freeTree(astNode *root) {
	if (root != NULL) {
		if (root->next != NULL) freeTree(root->next);
		if (root->op.left != NULL) freeTree(root->op.left);
		if (root->op.right != NULL) freeTree(root->op.right);
		if (root->str != NULL) free(root->str);
		free(root);
	}
}
Example #16
0
        void _redblacktree::freeTree( tree *root ) {
            if( !root ) {
                
                freeTree(root->left);
                freeTree(root->right);

            }
            delete root;
        }
Example #17
0
void freeTree(t_node *root)
{
   if (root)
   {
      freeTree(root->left);
      freeTree(root->right);
      free(root);
   }
}
Example #18
0
void freeTree(struct treeNode *root)
{
    if(root != NULL)
    {
        freeTree(root->left);
        freeTree(root->right);
        free(root);
    }
}
Example #19
0
void freeTree(Tree *root)
{
    if (root == NULL)
        return;
    freeTree(root->left);
    freeTree(root->right);
    if (root->left == NULL && root->right == NULL)
        free(root);
}
Example #20
0
static void freeTree(ttree_express *r)
{
	if (!r)
		return;

	freeTree(r->left);
	freeTree(r->right);
	free(r);
}
Example #21
0
void freeTree(HuffmanNode* node) {
    if (node == nullptr) {
        return;
    } else {
        freeTree(node->zero);
        freeTree(node->one);
    }

    delete node;
}
Example #22
0
void freeTree(node_t* t){
    if(t->split < 0){
        free(t);
    }
    else{
        freeTree(t->left);
        freeTree(t->right);
        free(t);
    }
}
Example #23
0
void freeTree(Symbol *root)
{
        if (root == nullptr) 
                return;
        if (root->left != nullptr)   
                freeTree(root->left); 
    if (root->right != nullptr)  
                freeTree(root->right);
	delete root;
}
Example #24
0
void freeTree(TreeNode *tree)
{
	if (tree == nullptr) 
		return;
	if (tree->left)   
		freeTree(tree->left); 
    if (tree->right)  
		freeTree(tree->right); 
    delete tree;
}
Example #25
0
void HODLR_Tree::freeTree(node* root){
  if (root->isLeaf == true){
    delete root;
    root = NULL;
    return;
  }
  freeTree(root->left);
  freeTree(root->right);
  delete root;
  root = NULL;
}
Example #26
0
void freeTree(Tnode* T)
{
    if (T==NULL)
    {
        return;
    }
    freeTree(T->right);
    freeTree(T->left);
    printf("%s\n", T->value);
    free(T);
}
Example #27
0
void freeTree(node_t* curr){
    // Don't do anything if the current node is NULL
    if(curr == NULL);
    else{
        // Free the left, the right, the current word, and then the current node.
        freeTree(curr->right);
        freeTree(curr->left);
        free(curr->word);
        free(curr);
    }
}
Example #28
0
void freeTree(nodo_t * r)
{
    if (r != NULL) {
        if (r->left != NULL)
            freeTree(r->left);
        if (r->right != NULL)
            freeTree(r->right);
        deallocaListIntervallo(r->lint);
        free(r);
    }
}
Example #29
0
// Frees all nodes in the given tree.
//
// INPUT: root - The root of the tree to be freed.
void freeTree(Tree* root)
{
    if(root != NULL)
    {
        freeTree(root->left);
        root->left = NULL;
        freeTree(root->right);
        root->right = NULL;
        free(root);
    }
}
Example #30
0
void freeTree(struct node* head)
{
  if(head->lchild)
  {
    freeTree(head->lchild);
  }
  if(head->rchild)
  {
    freeTree(head->rchild);
  }
  free(head);
}