算法
int Height(Tree p){
if(p == NULL) return 0;
int hl,hr;
hl = Height(p->fch);
hr = Height(p->nsib);
if(hl+1>hr) return hl+1;
else return hr;
}
测试环境
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
#define ElemType char
typedef struct node{
ElemType date;
struct node *fch,*nsib;
}Node,*Tree;
//zabd##eh###cfi#m###g#jk#ln#####
Tree CreateBiTree();
void Traverse(Tree p);
int Height(Tree p);
int main(){
Tree t = CreateBiTree();
// Traverse(t);
printf("%d",Height(t));
return 0;
}
int Height(Tree p){
if(p == NULL) return 0;
int hl,hr;
hl = Height(p->fch);
hr = Height(p->nsib);
if(hl+1>hr) return hl+1;
else return hr;
}
void Traverse(Tree p){
if(p==NULL){
return;
}
else{
Traverse(p->fch);
printf("%c",p->date);
Traverse(p->nsib);
}
return;
}
Tree CreateBiTree(){
Tree p;
char a;
scanf("%c",&a);
if(a=='#')
p=NULL;
else{
p=(Tree)malloc(sizeof(Node));
p->date=a;
p->fch=CreateBiTree();
p->nsib=CreateBiTree();
}
return p;
}