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 + -
显示快捷键?