#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree( ){
char ch;
scanf("%c",&ch);
if(ch=='#') return NULL;
else{
BiTree T = (BiTree)malloc(sizeof(BiTNode));
T -> lchild = T -> rchild = NULL;
T->data = ch;
T->lchild = CreateBiTree();
T->rchild = CreateBiTree();
return T;
}
}
//使用队列层次遍历求树高
void Depth1(BiTree T){
int front=-1,rear=-1;
int level=0,last=0;
BiTree Q[MaxSize];
Q[++rear]=T;
BiTree p;
while(front<rear){
p=Q[++front];
if(p->lchild)
Q[++rear]=p->lchild;
if(p->rchild)
Q[++rear]=p->rchild;
if(last==front){
level++;
last=rear;
}
}
printf("%d",level);
}
//递归算法求树高
int Depth2(BiTree T){
int ldep,rdep;
if(T==NULL)
return 0;
else{
ldep=Depth2(T->lchild);
rdep=Depth2(T->rchild);
return (ldep>rdep?ldep:rdep)+1;
}
}
//递归算法求树的宽度
void Width(BiTree T,int deep){
if(T==NULL)
return ;
else{
s[deep]++;
Width(T->lchild,deep+1);
Width(T->rchild,deep+1);
}
}