📄 sub17.cpp
字号:
#include<stdio.h>
#include<conio.h>
int nr;
int nrf=0;
struct Nod
{
int data;
Nod *stg,*drt;
};
Nod* make_nod(int a);
void insert(Nod*& N,int a);
void inordine(Nod*& N);
void frunze(Nod *N);
int niv(Nod *N);
void nrfr(Nod* N,int k,int=0);
void main()
{
Nod* rad;
int n,k;
clrscr();
printf("\nIntrare :");
printf("\n\tArborele:");
scanf("%d",&n);
rad=make_nod(n);
scanf("%d",&n);
while(n!=0)
{
insert(rad,n);
scanf("%d",&n);
}
printf("\n\tNivelul :");
scanf("%d",&k);
printf("\nIesire:");
printf("\n\tArborele :");
inordine(rad);
printf("\n\tAdincimea este : %d",niv(rad));
frunze(rad);
printf("\n\tNumarul de frunze este : %d",nrf);
nrfr(rad,k);
printf("\n\tNumarul de noduri de pe nivelul %d : %d ",k,nr);
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 frunze(Nod *N)
{
if(N->data!=0)
{
if(N->stg==0 && N->drt==0)
nrf++;
frunze(N->stg);
frunze(N->drt);
}
}
int niv(Nod *N)
{
if(N)
return 1+((niv(N->stg)>niv(N->drt))?niv(N->stg):niv(N->drt));
return 0;
}
void nrfr(Nod* N,int k,int adinc)
{
if(N)
{
adinc++;
if(adinc==k)
nr++;
else
{
nrfr(N->stg,k,adinc);
nrfr(N->drt,k,adinc);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -