">/* Right heavy * /=Parent- gt; Right_Child; (Node1- gt; Flag == 1)
{
//printf ( n Right to Right Rotation n ); gt; Right_Child=Node1- gt; Left_Child; - gt; Left_Child=Parent; gt; Flag=0;=Node1 ;
}
{
//printf ( n Right to Left Rotation n );=Node1- gt; Left_Child; - gt; Left_Child=Node2- gt; Right_Child; - gt; Right_Child=Node1; gt; Right_Child=Node2- gt; Left_Child; - gt; Left_Child=Parent; (Node2- gt; Flag == 1) gt; Flag=- 1; gt; Flag=0; (Node2- gt; Flag == - 1 ) - gt; Flag=1; - gt; Flag=0;=Node2;
} gt; Flag=0;
* H=F;
}
} (Parent);
}
//----------------------------------------
/* Balancing Right Heavy */NODE * Balance_Right_Heavy (struct NODE * Parent, int * H)
{NODE * Node1, * Node2; (Parent- gt; Flag)
{- 1: gt; Flag=0 ;; 0: gt; Flag=1;
* H=F ;; 1:
/* Rebalance * /=Parent- gt; Right_Child; (Node1- gt; Flag gt;=0)
{
//printf ( n Right to Right Rotation n ); gt; Right_Child=Node1- gt; Left_Child; - gt; Left_Child=Parent; (Node1- gt; Flag == 0)
{ gt; Flag=1; - gt; Flag=- 1;
* H=F;
} gt; Flag=Node1- gt; Flag=0;=Node1;
}
{
//printf ( n Right to Left Rotation n );=Node1- gt; Left_Child; - gt; Left_Child=Node2- gt; Right_Child; - gt; Right_Child=Node1; gt; Right_Child=Node2- gt; Left_Child; - gt; Left_Child=Parent; (Node2- gt; Flag == 1) gt; Flag=- 1; gt; Flag=0; (Node2- gt; Flag == - 1 ) - gt; Flag=1; - gt; Flag=0;=Node2; - gt; Flag=0;
}
} (Parent);
}
//----------------------------------------
/* Balancing Left Heavy */NODE * Balance_Left_Heavy (struct NODE * Parent, int * H)
{NODE * Node1, * Node2; (Parent- gt; Flag)
{1: gt; Flag=0 ;; 0: gt; Flag=- 1;
* H=F ;;- 1:
/* Rebalance * /=Parent- gt; Left_Child; (Node1- gt; Flag lt;=0)
{
//printf ( n Left to Left Rotation n ); gt; Left_Child=Node1- gt; Right_Child; - gt; Right_Child=Parent; (Node1- gt; Flag == 0)
{ gt; Flag=- 1; - gt; Flag=1;
* H=F;
} gt; Flag=Node1- gt; Flag=0;=Node1;
}
{
//printf ( n Left to Right Rotation n );=Node1- gt; Right_Child; - gt; Right_Child=Node2- gt; Left_Child; - gt; Left_Child=Node1; gt; Left_Child=Node2- gt; Right_Child; - gt; Right_Child=Parent; (Node2- gt; Flag == - 1) gt; Flag=1; gt; Flag=0; (Node2- gt; Flag == 1)- gt; Flag=- 1; - gt; Flag=0;=Node2; - gt; Flag=0;
}
} (Parent);
}
//----------------------------------------
/* Переміщаємо ноду з знайденим ключем з останнім правим ключем лівого дитини */NODE * Delete (struct NODE * R, struct NODE * Temp, int * H)
{NODE * Dnode=R; (R- gt; Right_Child!=NULL)
{ gt; Right_Child=Delete (R- gt; Right_Child, Temp, H); (* H)=Balance_Left_Heavy (R, H);
}
{= R; (Temp- gt; Number, R- gt; Number);=R- gt; Left_Child; (Dnode);
* H=T;
} (R);
}
//----------------------------------------
/* Видалення елемента з дерева */NODE * Delete_Element (struct NODE * Parent, int Number, int * H, int * status)
{NODE * Temp; (! Parent)
{( n База порожня або номер не знайдений! ); (Parent);
}
{(Number lt; convertnum (Parent- gt; Number))
{ gt; Left_Child=Delete_Element (Parent- gt; Left_Child, Number, H, status); (* H)=Balance_Right_Heavy (Parent, H);
} if (Number gt; convertnum (Parent- gt; Number))
{ gt; Right_Child=Delete_Element (Parent- gt; Right_Child, Number, H, status); (* H)=Balance_Left_Heavy (Parent, H);
}
{= Parent; (Temp- gt; Right_Child == NULL)
{= Temp- gt; Left_Child; <...