sub18_i.cpp
来自「STRUCTURI DE DATE SI ALGORITMI」· C++ 代码 · 共 102 行
CPP
102 行
#include<stdio.h>
#include<conio.h>
#include<math.h>
struct Nod
{
int data;
Nod *stg,*drt;
};
Nod* make_nod(int a);
void insert(Nod*& N,int a);
void inordine(Nod*& N);
int dif(Nod* N,int k); //NU MERGE!
int nrnod(Nod *N);
//int adinc(Nod *& N); //NU MERGE!
void main()
{
Nod *rad;
int n,k;
clrscr();
printf("\nIntrare :");
scanf("%d",&n);
rad=make_nod(n);
scanf("%d",&n);
while(n!=0)
{
insert(rad,n);
scanf("%d",&n);
}
printf("\nDiferenta k :");
scanf("%d",&k);
printf("\nArborele :");
inordine(rad);
//printf("\nAdincimea este : %d",adinc(rad));
if(dif(rad,k)!=0)
printf("\nExista nod cu proprietatea ceruta la punctul(d),nodul %d"\
,dif(rad,k));
else
printf("\nPropr. (d) nu este indeplinita pt. nici un nod!");
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);
}
}
int n=0;
int nrnod(Nod *N)
{
if(N->data!=0)
{
n++;
nrnod(N->stg);
nrnod(N->drt);
}
return(n);
}
int dif(Nod* N,int k)
{
int t=0;
if(N->data!=0)
{
t=abs(nrnod(N->stg)-nrnod(N->drt));
if(abs(nrnod(N->stg)-nrnod(N->drt))==k)
return(N->data);
dif(N->stg,k);
dif(N->drt,k);
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?