You are on page 1of 8

Universitatea Tehnică a Moldovei

Catedra Automatică și Tehnologii Informaționale

Disciplina: Structuri de date si algoritmi


Varianta 20

Raport
Tema :
“Analiza prelucrării structurilor de date cu liste ”

A efectuat: ,TI-173

A verificat: Moțpan Serghei

Chisinău 2018

1
Cuprins:

1. Scopul si obiectivele lucrarii………………………..3


2. Sarcina……………………………………………....4
3. Schema bloc ………………………………………..5
4. Concluzii………………………………………….....8
5. Bibliografie………………………………………….9
6. Anexa A…………………………………………….10
7. Anexa B…………………………………………….11

2
Scopul şi obiectivele:

1.de studiat şi însuşit materialul teoretic pentru evidenţierea esenţialului prelucrării structurilor
de date cu arbori în elaborarea modelelor soluţiei, anaizând exemplele din text;

2.de analizat principiile şi modurile de prelucrare, principalele operaţii cu structuri de date


arboriscente, dotând cu comentariile de vigoare;

3.exemplele din 1.3. (Aplicaţii de arbori binari în C), 2. şi exemplele 2.7 de derulat, obţinând
rezultatele de testare, verificare pentru care să se elaboreze scenariile succinte de soluţionare,
algoritmii funcţiilor principale, organigramele SD şi programele cu arbori şi fişiere (declarări şi
procesări).şi expuse în raport.

4.analizaţi, comentaţi, afişaţi organigramele şi toate componentele.

5.să se analizeze şi să se evidenţieze tehnica modelării şi programării eficiente pentru diverse


compartimente ale diferitor situaţii cu diverse argumentări şi modele de structuri abstracte,
incluzând fişiere cu teste de verificare, explicaţii de rigoare şi vizualizări.
- În raport să fie expuse toate activităţile şi dificultăţile întâlnite pe parcusul efectuării ll.

3
Sarcina:
Sa se dea la executie un program care prelucreza arborele si de explicat eficienta
arborilor,parcurgerile lui.

#include <stdio.h>
#include <stdlib.h>

/* A binary tree node has data, pointer to left child


and a pointer to right child */
struct node
{
int data;
struct node* left;
struct node* right;
};

/*Function protoypes*/
int getWidth(struct node* root, int level);
int height(struct node* node);
struct node* newNode(int data);

/* Function to get the maximum width of a binary tree*/


int getMaxWidth(struct node* root)
{
int maxWidth = 0;
int width;
int h = height(root);
int i;

4
/* Get width of each level and compare
the width with maximum width so far */
for(i=1; i<=h; i++)
{
width = getWidth(root, i);
if(width > maxWidth)
maxWidth = width;
}

return maxWidth;
}

/* Get width of a given level */


int getWidth(struct node* root, int level)
{

if(root == NULL)
return 0;

if(level == 1)
return 1;

else if (level > 1)


return getWidth(root->left, level-1) +
getWidth(root->right, level-1);
}

/* UTILITY FUNCTIONS */

5
/* Compute the "height" of a tree -- the number of
nodes along the longest path from the root node
down to the farthest leaf node.*/
int height(struct node* node)
{
if (node==NULL)
return 0;
else
{
/* compute the height of each subtree */
int lHeight = height(node->left);
int rHeight = height(node->right);
/* use the larger one */

return (lHeight > rHeight)? (lHeight+1): (rHeight+1);


}
}
/* Helper function that allocates a new node with the
given data and NULL left and right pointers. */
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);
}
/* Driver program to test above functions*/
int main()

6
{
struct node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
root->right->left = newNode(9);
root->right->right = newNode(8);
root->right->right->left = newNode(6);
root->right->right->right = newNode(7);

/*
Constructed bunary tree is:
1
/ \
2 3
/ \ \
4 5 8
/ \
6 7
*/
printf("Maximum width of binary tree is %d .\n", getMaxWidth(root));

return 0;
}

7
8

You might also like