⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 petre.cpp

📁 STRUCTURI DE DATE SI ALGORITMI
💻 CPP
字号:
#include<stdio.h>
#include<conio.h>
struct nod{
	int data;
	nod *stg,*drt;
	};
void deleteRoot(nod*& rad);
void deletep(nod*& rad, int a);
nod* make_nod(int a)
{
	nod* p;
	p=new nod;
	p->data=a;
	p->stg=0;
	p->drt=0;
	return(p);
}

nod* insert(nod *r,int a)
  {
	   if (r==0) return (make_nod(a));
	   else if (a< r->data)
				r->stg = insert(r->stg,a);
	   else if(a>r->data)
				r->drt=insert(r->drt,a);
	   return(r);
   }
void inordine(nod* r)
{
	if(r!=0){
		inordine(r->stg);
		printf("%d ",r->data);
		inordine(r->drt);
		}
}
nod* search(nod* r,int k)
	  {
		   if (r==0)  return NULL;
		   else if (k<r->data)
				return ( search(r->stg,k) );
		   else if (k>r->data)
				return ( search(r->drt,k) );
		   else return (r);
	  }
nod* removeGreatest(nod*& r)
	  {
		   nod* p;
		   if( r->drt==0 ) {
							 p = r;
							 r = r->stg;
							 return p;
							 }
		   else return removeGreatest(r->drt);
	  }


    
void deleteRoot(nod*& rad)
{
	 nod* p = rad;
	 if(rad->stg==0) rad = rad->drt;
	 else if(rad->drt==0) rad = rad->stg;
	 else {
		   rad = removeGreatest (rad->stg);
		   rad->stg = p->stg;
		   rad->drt = p->drt;
		   }
	  delete p;
}

void deletep(nod*& rad, int a)
{
      if(rad==NULL) 
           printf("Eroare: Valoarea %d nu este in arbore!", a);
	  else if( a<rad->data )  deletep(rad->stg,a);
	  else if( a>rad->data ) deletep(rad->drt,a);
	  else deleteRoot(rad);
}
void procedura(nod* r,int niv,int x,int lat)
{
	if(r!=NULL){
		gotoxy(x,niv);
		printf("%d",r->data);
		procedura(r->stg,niv+1,x-lat,lat/2);
		procedura(r->drt,niv+1,x+lat,lat/2);
		}
}
void main()
{
int a,b,c;
nod* rad=NULL;
clrscr();
printf("Int. datele:\n");
scanf("%d",&a);
while(a!=0){
	rad=insert(rad,a);
	scanf("%d",&a);
}
printf("\nINORDINE:");
inordine(rad);
printf("\nValoarea de cautat:");
scanf("%d",&b);
if(search(rad,b)==0)
	printf("\n %d NU ESTE!!!",b);
	else printf("\n%d ESTE!!!",b);
printf("\nValoarea de sters:");
scanf("%d",&c);
deletep(rad,c);
printf("\nINORDINE:");
inordine(rad);
getch();
clrscr();
procedura(rad,1,40,20);
getch();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -