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

函数接口定义:

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

代码如下:

#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;
}BinTree CreatBinTree()
{//层序生成二叉树BinTree BT;ElementType T;int front = 0;int tail = 0;BinTree Queue[1001] = { '\0' };//父节点数列,'\0'是字符串结束标志BinTree Date;scanf("%c", &T);if (T == '0')//空树{return NULL;}else{BT = (BinTree)malloc(sizeof(struct TNode));if (BT == NULL){return NULL;}BT->Data = T;//根节点赋值BT->Left = BT->Right = NULL;//初始化左右子树Queue[tail++] = BT;//给父节点数列加树}while (Queue[front]!=NULL)//根节点入队列{Date = Queue[front++];scanf("%c", &T);if (T == '0'){Date->Left = NULL;}else{Date->Left = (BinTree)malloc(sizeof(struct TNode));if (Date->Left == NULL)//先完成左树的操作,然后完成右树的操作{return NULL;}Date->Left->Data = T;Date->Left->Left = Date->Left->Right = NULL;Queue[tail++] = Date->Left;}scanf("%c", &T);if (T == '0'){Date->Right = NULL;}else{Date->Right = (BinTree)malloc(sizeof(struct TNode));if (Date->Left == NULL)//先完成左树的操作,然后完成右树的操作{return NULL;}Date->Right->Data = T;Date->Right->Left = Date->Right->Right = NULL;Queue[tail++] = Date->Right;}}return BT;
}int GetHeight(BinTree BT)//递归方法
{int LH, RH;//对左右子树的高度进行记录if (!BT){return 0;}else{LH = GetHeight(BT->Left);RH = GetHeight(BT->Right);return LH > RH ? ++LH : ++RH;//返回左右子树中值最大的,因为不会统计父节点,所以要再加上当前父节点}
}

数据结构——树和二叉树 6-1 求二叉树高度 (20 分)相关推荐

  1. 7-166 二分法求多项式单根 (20 分)

    7-166 二分法求多项式单根 (20 分) 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r) ...

  2. 7-10 求数字个数 (20 分)

    7-10 求数字个数 (20 分) 给出四个整数:A,B,K,C,其中A,B,C 都是大于 0 的个位数,问在所有仅由 A 或 B 组成的 K 位数中(K 位数的每一位都是 A 或 B),数字 C 的 ...

  3. 6-7 使用函数求素数和 (20 分)

    本题要求实现一个判断素数的简单函数.以及利用该函数计算给定区间内素数和的函数. 素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定义: int prime( int p ); ...

  4. 习题5-4 使用函数求素数和 (20 分)

    习题5-4 使用函数求素数和 (20 分) 本题要求实现一个判断素数的简单函数.以及利用该函数计算给定区间内素数和的函数. 素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定 ...

  5. 二叉树面试题:判断树是否为完全二叉树和求二叉树的镜像

    1.判断二叉树是否为完全二叉树: 层序遍历,从上到下,从左到右,遍历二叉树: 当遇到一个节点的左子树为空时,则该节点的右子树为空和后面遍历的节点都为叶子节点,否则不是完全二叉树. 当该节点只有左子树时 ...

  6. c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数

    二叉树的二叉链表的存储结构: typedef   char   TElemType; typedef   struct    BiTNode { TElemType data;//数据元素 BiTNo ...

  7. 6-1 求二叉树高度 (20 分)(C语言版)

    先说思路: 先判断是否为空树: 分别递归求左.右子树的高度: 取二者的max: 返回max+1 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其 ...

  8. 7-5 二分法求多项式单根 (20分)

    二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f( r )=0. 二分法的步骤为: 检查区间长度,如 ...

  9. 7-29 二分法求多项式单根 (20 分)

    二分法求函数根的原理为: 如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分法的步骤为: 1.检查区间长度,如果 ...

最新文章

  1. Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版
  2. 解决:MVC对象转json包含\r \n
  3. mysql 交集_MYSQL交集函数
  4. EasyCriteria –使用JPA Criteria的简便方法
  5. Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  6. oracle怎么查询模式名,oracle怎么查询数据库实例的三种方式
  7. SQL读写CSV文件
  8. 萌新的Python练习菜鸟100例(九)暂停一秒输出
  9. ImportError: No module named ‘Tkinter‘
  10. 使用C语言在windows下一口气打开一批网页
  11. 政务终端安全管理的三个视角
  12. S-SDLC(Secure Software Development Lifecycle) 安全编码规范
  13. 仿小米商城官网首页模板(HTML+CSS)
  14. 开关电源的共模干扰抑制技术
  15. Kerberos认证原理与环境部署
  16. 出包王女全集名字和顺序
  17. 射频芯片基础知识科普
  18. 简述文件服务器的主要功能,文件服务器的作用
  19. 【帆软FR】Echarts图表方案
  20. 第"三"行代码-kotlin部分学习笔记

热门文章

  1. 核心频率个加速频率_AMD锐龙、霄龙处理器标注最大加速频率:单核极限值
  2. 沉铜/黑孔/黑影工艺,PCB该 Pick 哪一种?
  3. 怎么使xp计算机不休眠,怎么让电脑不休眠,教您如何操作
  4. 深度调研车路协同智慧高速全国建设情况(中)
  5. 用Python加itchat写一个爬虫脚本每天定时给朋友发微信暖心话
  6. Cygwin安装教程 linux模拟器
  7. IIS出现:“系统找不到指定的路径”问题的有效解决办法
  8. 学习PCB设计前的知识扫盲
  9. 表格中json数据展示
  10. 微信小程序口红项目新手练习Day3