📄 sub20.cpp
字号:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct Nod
{
int data;
Nod *stg,*drt;
};
Nod* make_nod(int a);
void insert(Nod*& N,int a);
void inordine(Nod* N);
void search(Nod* N,int a);
Nod* max(Nod* N);
void del(Nod*& N,int a);
void delrad(Nod*& N);
void main()
{
Nod *rad;
int n,x;
clrscr();
printf("\nIntroduceti arborele :");
scanf("%d",&n);
rad=make_nod(n);
scanf("%d",&n);
while(n!=0)
{
insert(rad,n);
scanf("%d",&n);
}
inordine(rad);
printf("\nIntroduceti numarul cautat :");
scanf("%d",&x);
search(rad,x);
printf("\nMaximul este %d .",max(rad)->data);
del(rad,max(rad)->data);
printf("\nNoul arbore :");
inordine(rad);
getch();
}
Nod* make_nod(int a)
{
Nod *N;
N=new Nod;
N->data=a;
N->stg=N->drt=0;
return(N);
}
void insert(Nod*& N,int a)
{
if(N==0)
N=make_nod(a);
else
if(a<N->data)
insert(N->stg,a);
else
if(a>N->data)
insert(N->drt,a);
}
void inordine(Nod* N)
{
if(N->data!=0)
{
inordine(N->stg);
printf(" %d",N->data);
inordine(N->drt);
}
}
void search(Nod* N,int a)
{
if(N==0)
printf("\nNu am gasit numarul %d !",a);
else
if(a<N->data)
search(N->stg,a);
else
if(a>N->data)
search(N->drt,a);
else
printf("\nNumarul %d este in arbore.");
}
Nod* max(Nod* N)
{
Nod* t;
if(N->drt==0)
{
t=N;
N=N->stg;
return(t);
}
else
return(max(N->drt));
}
void del(Nod*& N,int a)
{
if(N==NULL)
{
printf("\nEROARE!Valoarea %d nu se afla in arbore!",a);
getch();
exit(1);
}
else
if(a<N->data)
del(N->stg,a);
else
if(a>N->data)
del(N->drt,a);
else
delrad(N);
}
void delrad(Nod*& N)
{
Nod* t=N;
if(N->stg==0)
N=N->drt;
else
if(N->drt==0)
N=N->stg;
else
{
N=max(N->stg);
N->stg=t->stg;
N->drt=t->drt;
}
delete t;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -