struct v e r t e x {
int data ;
struct v e r t e x l , r ;
} r o o t ;
struct v e r t e x new ( )
{
return ( ( struct v e r t e x ) m a l l o c ( s i z e o f ( struct v e r t e x ) ) ) ;
}
struct v e r t e x c r e a t e ( )
{
struct v e r t e x p ;
p=new ( ) ;
p>data =0;
p>r=NULL;
return ( p ) ;
}
int member ( int x )
{
struct v e r t e x p ;
p=r o o t ;
do{
i f ( x<p>data )
p=p>l ;
e l s e p=p>r ;
} while ( p!=NULL && x!=p>data ) ;
return ( p!=NULL ) ;
}
void i n s e r t ( int x )
{
struct v e r t e x p , f ;
p=r o o t ;
do{
f=p ;
i f ( x<p>data )
p=p>l ;
e l s e p=p>r ;
} while ( p!=NULL ) ;
p=new ( ) ;
p>data=x ;
p>l=p>r=NULL;
i f ( x<f >data )
1
f >l=p ;
e l s e f >r=p ;
void d e l e t e ( int x )
{
struct v e r t e x f , p , q ;
p=r o o t ;
do{
f=p ;
i f ( x<p>data )
p=p>l ;
e l s e p=p>r ;
} while ( x!=p>data ) ;
i f ( p>l==NULL | | p>r==NULL) {
i f ( p>r=NULL)
q=p>l ;
e l s e q=p>r ;
i f ( f >l==p )
f >l=q ;
e l s e f >r=q ;
}
else {
q=p>r ;
f=q ;
while ( q>l !=NULL) {
f=q ;
q=q>l ;
}
p>data=q>data ;
i f ( q==f )
p>r=q>r ;
e l s e f >l=q>r ;
}
}
4.3: 2