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.

În C

Răspunsuri la întrebare

Răspuns de danielpetrupasc
1

Răspuns:

#include <stdio.h>

#include <stdlib.h>

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;

}

Explicație:

Sper să ajute.


VxF: Această rezolvare este pentru arbore binar. Enunţul nu a restricţionat arborele la binar.
Alte întrebări interesante