|
דף
הבית >>עצים בינארים שאלות |
פיתרון תרגיל 11 .
|
#include <stdio.h>
#include <alloc.h>
typedef struct t {void *info;
struct t *left;
struct t *right;} TREE;
TREE *maketree(void *info)
//פונקציה יוצרתעץ בינארי בעל צומת בודד
{
TREE *ptr=(TREE*)malloc(sizeof(TREE));
if(ptr==NULL)
{
printf("Overflow");
exit(1);
}
ptr->info=info;
ptr->right=ptr->left=NULL;
return(ptr);
}
void setleft(TREE *ptr, void *info)
//פונקציה זו יוצרת בן שמאלי לצומת נתון
{
if(ptr==NULL)
{
printf("Invalid node");
exit(2);
}
if(ptr->left!=NULL)
{
printf("Left son already exist");
exit(3);
}
ptr->left=maketree(info);
}
void setright(TREE *ptr, void *info)
//פונקציה יוצרת בן ימיני לצומת נתון
{
if(ptr==NULL)
{
printf("Invalid node");
exit(2);
}
if(ptr->right!=NULL)
{
printf("Right son already exist");
exit(3);
}
ptr->right=maketree(info);
}
void leftrotation(TREE *ptr1)
//פונקציה זו מסובבת עץ בינארי שמאלה ,מסביב לצומת נתון ,לצורך איזון העץ
{
TREE *ptr2, *ptr3;
ptr2=ptr1->right;
ptr3=ptr2->left;
ptr2->left=ptr1;
ptr1->right=ptr3;
}
void rightrotation(TREE *ptr1)
//פונקציה זו מסובבת עץ בינארי ימינה ,מסביב לצומת נתון ,לצורך איזון העץ
{
TREE *ptr2, *ptr3;
ptr2=ptr1->left;
ptr3=ptr2->right;
ptr2->right=ptr1;
ptr1->left=ptr3;
}
|
|
הקודם
|
|
הבא
|
|