Êý¾Ý½á¹¹¶þ²æÅÅÐòÊ÷µÄʵÏÖ (ÓÃ˳ÐòºÍ¶þ²æÁ´±í×÷´æ´¢½á¹¹ )¿Î³ÌÉè¼Æ ÏÂÔØ±¾ÎÄ

node(int i):data(i),left(NULL),right(NULL){}

void inorder(node *&root) //ÖÐÐò±éÀú£¬·ûºÏÉýÐòÊä³ö {

if(root!=NULL) {

inorder(root->left); cout<data<<' '; inorder(root->right); } }

void insert(node *&ptr,int item) //ÔÚ²éÕÒÊ÷ÖвåÈëÔªËØ {

if(ptr==NULL) ptr=new node(item); else if(itemdata) insert(ptr->left,item); else insert(ptr->right,item); }

node *find(node *&ptr,int item) //ÔÚ²éÕÒÊ÷ÖвéÕÒÔªËØ,ÕÒµ½·µ»ØËùÔÚ½áµãÖ¸Õ룬ÕÒ²»µ½·µ»Ø¿ÕÖ¸Õë¡£ {

if(ptr==NULL)

return NULL; if(ptr->data==item) return ptr; else if(itemdata) find(ptr->left,item); else find(ptr->right,item); }

node *&findy(node *&ptr,int item) //ÔÚ²éÕÒÊ÷ÖвéÕҿ϶¨´æÔÚµÄÔªËØ,²¢·µ»ØÆäÒýÓà {

if(ptr->data==item) return ptr; else if(itemdata) findy(ptr->left,item); else findy(ptr->right,item); }

node* rl(){return left;} node* rr(){return right;}

void dele(node *&ptr) //ɾ³ýֵΪitemËùÔÚ½áµã {

if(ptr->rl()==NULL&&ptr->rr()==NULL)

ptr=NULL;

else if(ptr->rr()==NULL) ptr=ptr->rl(); else

ptr=ptr->rr(); } private: int data;

node *left; //×óº¢×Ó½áµã node *right; //ÓÒº¢×Ó½áµã }; int main() { int t,i=0,j;

cout<<\ 10¼Æ¿ÆÒ»°à Ñî Ðñ£¨1010311114£©\ cout<<\¶þ²æÅÅÐòÊ÷TµÄÊäÈë:\ cout<<\ÊäÈëÊý×Ö¸öÊý(½áµã¸öÊý):\ cin>>t;

cout<<\ÊäÈë\¸öÊý×Ö£¬Êý×ÖÖ®¼äÓÿոñ¸ô¿ª:\ cin>>j;

node *x=new node(j);

for(;i>j; x->insert(x,j); }

cout<<\ÖÐÐò±éÀúΪ:\

x->inorder(x); //×÷ÖÐÐò±éÀú cout<<\

cout<<\¶þ²æÅÅÐòÊ÷TµÄÔªËØ²éÕÒºÍɾ³ý:\ cout<<\ÊäÈë²Ù×÷(µ±ÊäÈë-1ʱ³ÌÐò½áÊø):\ cin>>j; while(j!=-1) {

node *t=x->find(x,j); //¶¨Î»½áµã if(t!=NULL) {

node *&y=x->findy(x,j); x->dele(y); cout<<\ÖÐÐò±éÀúΪ:\ x->inorder(x); }