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 scris în limbajul C. Dau Coroana!!!
Răspunsuri la întrebare
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node* left;
struct node* right;
};
struct node* newNode(int data)
{
struct node* node = (struct node*)
malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}
void inorder(struct node* root)
{
if (root != NULL)
{
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
}
int main()
{
int pari = 0;
int impari = 0;
struct node *root = newNode(2);
root->left = newNode(7);
root->right = newNode(5);
root->left->right = newNode(6);
root->left->right->left=newNode(1);
root->left->right->right=newNode(11);
root->right->right=newNode(9);
root->right->right->left=newNode(4);
printf("Traversarea în ordine \n");
inorder(root);
// Calculam cate elemente pare si impare avem in arbore
if (root->data % 2 == 0)
pari++;
else
impari++;
if (root->left->data % 2 == 0)
pari++;
else
impari++;
if (root->right->data % 2 == 0)
pari++;
else
impari++;
if (root->left->right->data % 2 == 0)
pari++;
else
impari++;
if (root->left->right->left->data % 2 == 0)
pari++;
else
impari++;
if (root->left->right->right->data % 2 == 0)
pari++;
else
impari++;
if (root->right->right->data % 2 == 0)
pari++;
else
impari++;
if (root->right->right->left->data % 2 == 0)
pari++;
else
impari++;
printf("\n Numarul de elemente pare din arbore este: %d", pari);
printf("\n Numarul de elemente impare din arbore este: %d", impari);
getchar();
return 0;
}