Informatică, întrebare adresată de singei, 8 ani în urmă

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 de oklezgo7
0

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.

Alte întrebări interesante