本题要求给定二叉树的高度。
函数接口定义:
int GetHeight( BinTree BT );
其中BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
要求函数返回给定二叉树BT的高度值。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef char ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree CreatBinTree(); /* 实现细节忽略 */
int GetHeight( BinTree BT );
int main()
{
BinTree BT = CreatBinTree();
printf("%d\n", GetHeight(BT));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例(对于图中给出的树):
输出样例:
4
分析:
用递归求树高,先求左子树,再求右子树,然后比较出最大树高赋值给Max,这里求的树高没有加上所求这一层,因此返回Max时要+1
代码:
//递归求树高
int GetHeight( BinTree BT )
{
int HL,HR,MaxH;
if(BT)
{
HL=GetHeight( BT->Left );//先求左子树树高
HR=GetHeight( BT->Right );//再求右子树树高
if(HL>=HR)//比较出最大值赋给MaxH
MaxH=HL;
else
MaxH=HR;
return (MaxH+1);
}
else
return 0;
}