Să se creeze un arbore al căror noduri conține numere întregi. Să se afișeze conținutul arborelui la ecran și să se calculeze cîte elemente pare și cîte elemente impare avem în arbore.
Programul să fie creat în limbajul C cu ajutorul la Prelucrarea tipurilor de date arbori binari. Dau Coroana!!!
Răspunsuri la întrebare
Răspuns de
0
struct node {
int data;
struct node *left;
struct node *right;
};
/* Functie pentru inserarea unui element în arbore */
void insert(struct node **tree, int val)
{
struct node *temp = NULL;
if(!(*tree))
{
temp = (struct node *)malloc(sizeof(struct node));
temp->left = temp->right = NULL;
temp->data = val;
*tree = temp;
return;
}
if(val < (*tree)->data)
{
insert(&(*tree)->left, val);
}
else if(val > (*tree)->data)
{
insert(&(*tree)->right, val);
}
}
/* Functie pentru afisarea arborelui */
void printTree(struct node *tree)
{
if (tree)
{
printTree(tree->left);
printf("%d\n",tree->data);
printTree(tree->right);
}
}
/* Functie pentru calcularea numarului de elemente pare din arbore */
int countEven(struct node *tree)
{
if (tree)
{
return (tree->data % 2 == 0) + countEven(tree->left) + countEven(tree->right);
}
return 0;
}
/* Functie pentru calcularea numarului de elemente impare din arbore */
int countOdd(struct node *tree)
{
if (tree)
{
return (tree->data % 2 != 0) + countOdd(tree->left) + countOdd(tree->right);
}
return 0;
}
int main()
{
struct node *root;
root = NULL;
/* Inserarea elementelor in arbore */
insert(&root, 5);
insert(&root, 3);
insert(&root, 2);
insert(&root, 4);
insert(&root, 7);
insert(&root, 6);
insert(&root, 8);
/* Afisarea arborelui */
printf("Conținutul arborelui este:\n");
printTree(root);
/* Calcularea numarului de elemente pare din arbore */
int num_even = countEven(root);
printf("Numarul de elemente pare din arbore este: %d\n", num_even);
/* Calcularea numarului de elemente impare din arbore */
int num_odd = countOdd(root);
printf("Numarul de elemente impare din arbore este: %d\n", num_odd);
return 0;
}
int data;
struct node *left;
struct node *right;
};
/* Functie pentru inserarea unui element în arbore */
void insert(struct node **tree, int val)
{
struct node *temp = NULL;
if(!(*tree))
{
temp = (struct node *)malloc(sizeof(struct node));
temp->left = temp->right = NULL;
temp->data = val;
*tree = temp;
return;
}
if(val < (*tree)->data)
{
insert(&(*tree)->left, val);
}
else if(val > (*tree)->data)
{
insert(&(*tree)->right, val);
}
}
/* Functie pentru afisarea arborelui */
void printTree(struct node *tree)
{
if (tree)
{
printTree(tree->left);
printf("%d\n",tree->data);
printTree(tree->right);
}
}
/* Functie pentru calcularea numarului de elemente pare din arbore */
int countEven(struct node *tree)
{
if (tree)
{
return (tree->data % 2 == 0) + countEven(tree->left) + countEven(tree->right);
}
return 0;
}
/* Functie pentru calcularea numarului de elemente impare din arbore */
int countOdd(struct node *tree)
{
if (tree)
{
return (tree->data % 2 != 0) + countOdd(tree->left) + countOdd(tree->right);
}
return 0;
}
int main()
{
struct node *root;
root = NULL;
/* Inserarea elementelor in arbore */
insert(&root, 5);
insert(&root, 3);
insert(&root, 2);
insert(&root, 4);
insert(&root, 7);
insert(&root, 6);
insert(&root, 8);
/* Afisarea arborelui */
printf("Conținutul arborelui este:\n");
printTree(root);
/* Calcularea numarului de elemente pare din arbore */
int num_even = countEven(root);
printf("Numarul de elemente pare din arbore este: %d\n", num_even);
/* Calcularea numarului de elemente impare din arbore */
int num_odd = countOdd(root);
printf("Numarul de elemente impare din arbore este: %d\n", num_odd);
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Fizică,
8 ani în urmă
Informatică,
8 ani în urmă
Limba română,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă