PTA 6-1 求二叉树高度

本题要求给定二叉树的高度。

函数接口定义:

int GetHeight( BinTree BT );

其中BinTree结构定义如下:
在一行中按规定顺序输出i的所有祖先结点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。

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

试题分析:

       本题目可以使用递归的算法来解决,方便快捷,代码量小。

实现代码:

int GetHeight(BinTree BT){ 
	int lt;   //记录当前结点的左子树的高度
	int rt;  //记录当前节点的右子树的高度
	if(BT==NULL){
		return 0;
	} 
	else{
		lt=GetHeight(BT->Left);
		rt=GetHeight(BT->Right);
		int result;
		if(lt>rt){
			result=lt;
		}
		else{
			result=rt;
		}
		return result+1;    
		//返回左右子树中值最大的,一定别忘了加上当前结点。
		//因为result记录的是左右子树中高度较大的那个子树的高度,没有把当前结点算上,
		//当前结点也是一层,所以需要+1 
	}
} 

本期分享到这里就结束啦,大家如果对小编的代码有疑问或者想要小编做其他的程序,都欢迎来私信小编呀!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值