C99/Drzewo binarne/ Dodatkowy element węzła.

0

Witam,
próbuje swoich sił z drzewem BST, chciałem dodać dodatkową zmienną int lp która miała by zliczać liczbę powtarzających się tworów w danym drzewie, jednak gdy odpalam program wyskakuje mi naruszenie pamięci, programuje pod c99:
#include<stdlib.h>
#include<stdio.h>

struct bin_tree {
int data;
int lp;
struct bin_tree * right, * left;
};
typedef struct bin_tree node;

void insert(node ** tree, int val)
{
node *temp = NULL;
if(!(*tree))
{
temp = (node *)malloc(sizeof(node));
temp->left = NULL;
temp->right = NULL;
temp->data = val;
temp->lp=1;
*tree = temp;
return;
}
if(val == (*tree)->data)
{
temp->lp=1;
return;
}
if(val < (*tree)->data)
{
insert(&(*tree)->left, val);
}
else if(val > (*tree)->data)
{
insert(&(*tree)->right, val);
}

}

void print_inorder(node * tree)
{
if (tree)
{
print_inorder(tree->left);
printf("%d\n",tree->data);
print_inorder(tree->right);
}
}

void deltree(node * tree)
{
if (tree)
{
deltree(tree->left);
deltree(tree->right);
free(tree);
}
}

int main()
{
node root;
root = NULL;
/
Inserting nodes into tree */
insert(&root, 9);
insert(&root, 4);
insert(&root, 15);
insert(&root, 6);
insert(&root, 12);
insert(&root, 9);
insert(&root, 2);

printf("In Order Display\n");
print_inorder(root);


deltree(root);
return 0;

}

1

Literówka ;) zamiast

temp->lp=1; powinno być (*tree)->lp++;
0

Dzieki, rzeczywiście działa!

1 użytkowników online, w tym zalogowanych: 0, gości: 1