Académique Documents
Professionnel Documents
Culture Documents
SDD7
SDD7
Arbori binari
info
nume
varsta
elem
90
Ion
23
root
aux
info
left right
creare
temp
l (NULL)
r (NULL)
left left right
left
right
right
NULL NULL
temp
info("Gigel",60,24)
left right
info("Ion",90,24)
left
info("Gigel",60,2
4)
left right
(NULL) (NULL)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
int cod;
char* nume;
int varsta;
};
struct bynarytreenode
{
student info;
bynarytreenode *left, *right;
};
if(!root)
{
aux=createnode(stud,NULL,NULL);
return aux;
}
else {
//structura repetitiva la infinit, iese prin return
while(1)
{
if(stud.cod > aux->info.cod)
{
if(aux->right) aux=aux->right;
else
{
aux->right=createnode(stud,NULL,NULL);
return root;
}
}
else
{
if(stud.cod < aux->info.cod)
{
if (aux->left) aux=aux->left;
else
{
aux->left=createnode(stud,NULL,NULL);
return root;
}
}
else
{
printf("\n Nod existent");
return root;
}
}
}
}
}
//preordine
void printRLeftRight(bynarytreenode* root)
{
if (root != NULL)
{
printf("\n Studentul %s are codul %d si varsta %d", root->info.nume, root-
>info.cod, root->info.varsta);
printRLeftRight(root->left);
printRLeftRight(root->right);
}
}
//inordine
void printLeftRRight(bynarytreenode* root)
{
if (root != NULL)
{
printLeftRRight(root->left);
printf("\n Studentul %s are codul %d si varsta %d", root->info.nume, root-
>info.cod, root->info.varsta);
printLeftRRight(root->right);
}
}
//postordine
void printLeftRightR(bynarytreenode* root)
{
if (root != NULL)
{
printLeftRightR(root->left);
printLeftRightR(root->right);
printf("\n Studentul %s are codul %d si varsta %d", root->info.nume, root-
>info.cod, root->info.varsta);
}
}
void main()
{
bynarytreenode* r = NULL;
student elem;
elem.cod = 90;
elem.nume = (char*) malloc((strlen("Ion")+1)*sizeof(char));
strcpy(elem.nume, "Ion");
elem.varsta = 24;
r = insertnode(elem, r);
free(elem.nume);
elem.cod = 60;
elem.nume = (char*) malloc((strlen("Gigel")+1)*sizeof(char));
strcpy(elem.nume, "Gigel");
elem.varsta = 24;
r = insertnode(elem, r);
free(elem.nume);
elem.cod = 80;
elem.nume = (char*) malloc((strlen("Maricica")+1)*sizeof(char));
strcpy(elem.nume, "Maricica");
elem.varsta = 24;
r = insertnode(elem, r);
free(elem.nume);
printLeftRRight(r);
_getch();
}
inserare
stergere
cautare
afisare(preordine,postorine)