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

📄 arbbin.cpp

📁 STRUCTURI DE DATE SI ALGORITMI
💻 CPP
字号:
#include<stdio.h>
#include<conio.h>
#include"arbore.h"

void inorder(Nod *p)
{
		if(p!=NULL){
		inorder(p->stg);
		printf("%c",p->data);
		inorder(p->drt);
		}
}
void postorder(Nod *p)
{
	if(p!=NULL){
		postorder(p->stg);
		postorder(p->drt);
		printf("%c",p->data);
		}
}

int depth(Nod *p)
{
	int ns,nd;
	if(p!=NULL){
		ns=depth(p->stg);
		nd=depth(p->drt);
		return(ns>nd?ns+1:nd+1);
		}
	else return(0);
}
int nrnod(Nod *p)
{
	if(p!=NULL)
		return(1+nrnod(p->stg)+nrnod(p->drt));
	else return(0);
}
int nrfrz(Nod *p)
{
	if(p==0) return 0;
	else if(p->stg==0 && p->drt==0) return 1;
	else return nrfrz(p->stg)+nrfrz(p->drt);
}
int valmax(Nod *p)
{
	int m=0;
	int vs,vd;
	if(p!=NULL){
		m=p->data;
		vs=valmax(p->stg);
		vd=valmax(p->drt);
		if(vs>m) m=vs;
		if(vd>m) m=vd;
		}
	return(m);
}

void arm(Nod *p)
{
	if(p!=NULL && (p->stg!=0 || p->drt!=0)){
		if(p->data>valmax(p->stg) && p->data>valmax(p->drt))
			printf(" %c",p->data);
		arm(p->stg);
		arm(p->drt);
		}
}

int valmin(Nod *p)
{
	int m=0;
	int vs,vd;
	if(p!=NULL){
		m=p->data;
		vs=valmin(p->stg);
		vd=valmin(p->drt);
		if(vs<m) m=vs;
		if(vd<m) m=vd;
		}
	return(m);
}
void procedura(Nod *p)
{
	if(p!=NULL && (p->stg!=0 || p->drt!=0)){
		if(valmax(p->stg)<valmin(p->drt))
			printf(" %c",p->data);
		procedura(p->stg);
		procedura(p->drt);
		}
}
void comuta(Nod *p)
{
	Nod *temp;
	if(p!=0){
		temp=p->stg;
		p->stg=p->drt;
		p->drt=temp;
		comuta(p->stg);
		comuta(p->drt);
		}
}
void afisarep(Nod* p)
{
	if(p!=NULL){
		printf("%c",p->data);
		if(p->stg!=0 || p->drt!=0){
		printf("(");
		if(p->stg!=NULL)
			afisarep(p->stg);
		else if(p->drt!=NULL) printf("-");
		printf(",");
		if(p->drt!=NULL)
			afisarep(p->drt);
		else if(p->stg!=NULL) printf("-");
		printf(")");
		}
		}
}

void main(void)
{
	Nod *p;
	clrscr();
	textmode(C40);
	_setcursortype(_NOCURSOR);
	p=creareArbore();
	printf("\nInordine:\n");
	inorder(p);
	printf("\nPostordine:\n");
	postorder(p);
	printf("\nAdincimea=%d",depth(p));
	printf("\nNr.noduri=%d",nrnod(p));
	printf("\nNr.frunze=%d",nrfrz(p));
	printf("\nRadacinile mari:");
	arm(p);
	printf("\nSAS<SAD:");
	procedura(p);
	comuta(p);
	printf("\nArborele inversat:");
	afisarep(p);
	getch();
}

⌨️ 快捷键说明

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