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. Programul să conțină scanf și răspuns în formă de printf. Dau Coroana!!!
Răspunsuri la întrebare
Răspuns:
#include <stdio.h>
#include <stdlib.h>
struct treeNode {
int value;
struct treeNode *left;
struct treeNode *right;
};
void addNode(struct treeNode *node, int value) {
if (value < node->value) {
if (node->left == NULL) {
node->left = malloc(sizeof(struct treeNode));
node->left->value = value;
node->left->left = NULL;
node->left->right = NULL;
} else {
addNode(node->left, value);
}
} else {
if (node->right == NULL) {
node->right = malloc(sizeof(struct treeNode));
node->right->value = value;
node->right->left = NULL;
node->right->right = NULL;
} else {
addNode(node->right, value);
}
}
}
void printTree(struct treeNode *node) {
if (node == NULL) {
return;
}
printf("%d ", node->value);
printTree(node->left);
printTree(node->right);
}
int countEven(struct treeNode *node) {
if (node == NULL) {
return 0;
}
int count = 0;
if (node->value % 2 == 0) {
count = 1;
}
return count + countEven(node->left) + countEven(node->right);
}
int countOdd(struct treeNode *node) {
if (node == NULL) {
return 0;
}
int count = 0;
if (node->value % 2 == 1) {
count = 1;
}
return count + countOdd(node->left) + countOdd(node->right);
}
int main(void) {
// Cream rădăcina arborelui
struct treeNode *root = NULL;
int value;
printf("Introduceți valorile arborelui (0 pentru a opri):\n");
scanf("%d", &value);
while (value != 0) {
if (root == NULL) {
// Dacă arborele este gol, cream rădăcina
root = malloc(sizeof(struct treeNode));
root->value = value;
root->left = NULL;
root->right = NULL;
} else {
// Altfel, adăugăm valoarea la arbore
addNode(root, value);
}
scanf("%d", &value);
}
// Afișăm conținutul arborelui
printf("Conținutul arborelui: ");
printTree(root);
printf("\n");
// Calculăm câte elemente pare și câte elemente impare există în arbore
int evenCount = countEven(root);
int oddCount = countOdd(root);
printf("Numărul de elemente pare în arbore: %d\n", evenCount);
printf("Numărul de elemente impare în arbore: %d\n", oddCount);
return 0;
}
Nu uita sa pui 0 dupa ce scrii continutu arborelui
Sper ca e bine si ca te-am ajutat.