求二叉树高度
求二叉树高度

求二叉树高度

6-1 求二叉树高度

分数 20

全屏浏览题目

切换布局

作者 陈越

单位 浙江大学

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

函数接口定义:

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

代码:

int GetHeight( BinTree BT)
{
    
    if (BT == NULL)
    {
        return 0;
    }else{
        int height_l = GetHeight(BT -> Left);
        int height_r = GetHeight(BT -> Right);
        int max_height = (height_l>=height_r?height_l:height_r) + 1;
        return max_height;
    }
}

根据递归的思路:

根据先序遍历,先将二叉树先递归左数,每进入一个节点都会判断当前节点是否为空,如果为空则上一个节点是度为1或0的节点,则当前节点高度为0。返回时,递归右树。当左右树下节点都返回时判断是左树高度高还是右树高度高。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注