📄 arbbin.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 + -