数据结构——树和二叉树 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
代码如下:
#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 分)相关推荐
- 7-166 二分法求多项式单根 (20 分)
7-166 二分法求多项式单根 (20 分) 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r) ...
- 7-10 求数字个数 (20 分)
7-10 求数字个数 (20 分) 给出四个整数:A,B,K,C,其中A,B,C 都是大于 0 的个位数,问在所有仅由 A 或 B 组成的 K 位数中(K 位数的每一位都是 A 或 B),数字 C 的 ...
- 6-7 使用函数求素数和 (20 分)
本题要求实现一个判断素数的简单函数.以及利用该函数计算给定区间内素数和的函数. 素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定义: int prime( int p ); ...
- 习题5-4 使用函数求素数和 (20 分)
习题5-4 使用函数求素数和 (20 分) 本题要求实现一个判断素数的简单函数.以及利用该函数计算给定区间内素数和的函数. 素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定 ...
- 二叉树面试题:判断树是否为完全二叉树和求二叉树的镜像
1.判断二叉树是否为完全二叉树: 层序遍历,从上到下,从左到右,遍历二叉树: 当遇到一个节点的左子树为空时,则该节点的右子树为空和后面遍历的节点都为叶子节点,否则不是完全二叉树. 当该节点只有左子树时 ...
- c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数
二叉树的二叉链表的存储结构: typedef char TElemType; typedef struct BiTNode { TElemType data;//数据元素 BiTNo ...
- 6-1 求二叉树高度 (20 分)(C语言版)
先说思路: 先判断是否为空树: 分别递归求左.右子树的高度: 取二者的max: 返回max+1 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其 ...
- 7-5 二分法求多项式单根 (20分)
二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f( r )=0. 二分法的步骤为: 检查区间长度,如 ...
- 7-29 二分法求多项式单根 (20 分)
二分法求函数根的原理为: 如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分法的步骤为: 1.检查区间长度,如果 ...
最新文章
- Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版
- 解决:MVC对象转json包含\r \n
- mysql 交集_MYSQL交集函数
- EasyCriteria –使用JPA Criteria的简便方法
- Csharp 打印Word文件默認打印機或選擇打印機設置代碼
- oracle怎么查询模式名,oracle怎么查询数据库实例的三种方式
- SQL读写CSV文件
- 萌新的Python练习菜鸟100例(九)暂停一秒输出
- ImportError: No module named ‘Tkinter‘
- 使用C语言在windows下一口气打开一批网页
- 政务终端安全管理的三个视角
- S-SDLC(Secure Software Development Lifecycle) 安全编码规范
- 仿小米商城官网首页模板(HTML+CSS)
- 开关电源的共模干扰抑制技术
- Kerberos认证原理与环境部署
- 出包王女全集名字和顺序
- 射频芯片基础知识科普
- 简述文件服务器的主要功能,文件服务器的作用
- 【帆软FR】Echarts图表方案
- 第"三"行代码-kotlin部分学习笔记