6-8 求二叉树高度(20 分)
本题要求给定二叉树的高度。
输出样例(对于图中给出的树):
4
#include <stdio.h>
#include <stdlib.h>
typedef struct BTiNode
{
char data;
struct BTiNode *left,*right;
}BTiNode,*BiTree;
void Print(BiTree T)
{
if(T)
{
printf("%c",T->data);
Print(T->left);
Print(T->right);
}
else printf("#");
}
BiTree CreateBinTree()
{ char data;
BiTree p;
p = (BiTree)malloc(sizeof(BTiNode));
if(p==NULL) return NULL;
data = getch(); //scanf("\n%c",&data);
if((data>=65&&data<=90)||(data>=97&&data<=122))//输入26个(大小写)字母以外无效
{ p->data = data;
p->left = CreateBinTree();
p->right = CreateBinTree();
}
else p = NULL;
return p;
}
int GetHeight( BiTree BT )
{ if(BT==NULL) return 0;
int l,r;
l = GetHeight(BT->left);
r = GetHeight(BT->right);
return (l>=r?l:r)+1;
}
void main()
{
BiTree BT=CreateBinTree();
Print(BT);putchar('\n');
printf("Height = %d\n", GetHeight(BT));
return ;
}