פיתרון תרגיל 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;
}
הקודם
הבא