二叉树求深度和叶子数

6-4 二叉树求深度和叶子数 编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 函数接口定义:int GetDepthOfBiTree ( BiTree T); int LeafCount(BiTree T);其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 裁判测试程序样例://头文件包含 #include<stdlib.h> #include<stdio.h> 阅读详情

编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构

函数接口定义:

int GetDepthOfBiTree ( BiTree T);
int LeafCount(BiTree T);

其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。

裁判测试程序样例:

//头文件包含
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>

//函数状态码定义
#define TRUE       1
#define FALSE      0
#define OK         1
#define ERROR      0
#define OVERFLOW   -1
#define INFEASIBLE -2
#define NULL  0
typedef int Status;

//二叉链表存储结构定义
typedef int TElemType;
typedef struct BiTNode{
    TElemType data;
    struct BiTNode  *lchild, *rchild; 
} BiTNode, *BiTree;

//创建二叉树各结点,输入零代表创建空树
//采用递归的思想创建
//递归边界:空树如何创建呢:直接输入0;
//递归关系:非空树的创建问题,可以归结为先创建根节点,输入其数据域值;再创建左子树;最后创建右子树。左右子树递归即可完成创建!

Status CreateBiTree(BiTree &T){
   TElemType e;
   scanf("%d",&e);
   if(e==0)T=NULL;
   else{
     T=(BiTree)malloc(sizeof(BiTNode));
     if(!T)exit(OVERFLOW);
     T->data=e;
     CreateBiTree(T->lchild);
     CreateBiTree(T->rchild);
   }
   return OK;  
}

//下面是需要实现的函数的声明
int GetDepthOfBiTree ( BiTree T);
int LeafCount(BiTree T);
//下面是主函数
int main()
{
   BiTree T;
   int depth, numberOfLeaves;
   CreateBiTree(T);
   depth= GetDepthOfBiTree(T);
     numberOfLeaves=LeafCount(T);
   printf("%d %d\n",depth,numberOfLeaves);
}

/* 请在这里填写答案 */

输入样例:

1 3 0 0 5 7 0 0 0



结尾无空行

输出样例:

3 2



结尾无空行

ANSWER

int GetDepthOfBiTree ( BiTree T){
	if(T == NULL)
		return 0;//空树返回0
	else{
		int m = 0;
		int n = 0;
		m = GetDepthOfBiTree(T->lchild);
		n = GetDepthOfBiTree(T->rchild);
		if(m > n)
			return m+1;//加根节点 
		else
			return n+1;
	}
}

int LeafCount(BiTree T){
	if(T == NULL)
		return 0;
	if(T->lchild == NULL && T->rchild == NULL)
		return 1;//如果是叶子结点返回1
	else
		return LeafCount(T->lchild)+LeafCount(T->rchild);
}
计算树的深度,存储结构是二叉链表 //在二叉树中如何获得树的深度//方法1:递归算法--先计算出左右子树的深度,之后比较两者之间的大小关系,取大的那个数值,然后将此数值加一后返回//该返回值,即树的深度//方法2:利用队列,每遍历树的一层,就将树的深度deepth+1//该方法要注意的地方:1,设置变量获取每一层中的节点数,然后根据该节点数做循环,每循环一次都要将该节点//从队列里删除,并将该节点的左右孩子入队//2,特殊点是每一 阅读详情

相关推荐

PTA二叉树求深度和叶子数

//头文件包含 #include #include #include //函数状态码定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define INFEASIBLE -2 #define NULL 0 typedef in

sususuyesylvia的博客 1089

PTA 6-4 二叉树求深度和叶子数

6-4 二叉树求深度和叶子数 编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 函数接口定义: int GetDepthOfBiTree ( BiTree T); int LeafCount(BiTree T); 其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 裁判测试程序样例: //头文件包含 #include<stdlib.h> #include<stdio.h> #include<malloc.h> //函

wcd278212784的博客 3733

6-156 二叉树的深度

要求实现函数,计算并返回二叉树的深度。

燕朝铭的博客 475

计算二叉树的深度?

已知二叉树用二叉链表存储,试编写一函数实现计算该树的高度。定义必要的数据结构 typedef struct BiTNode{ TElemtype data; struct BiTNode *lchild, *rchild; }BiTNode,*BiTree; int Depth(BiTree T){ //计算二叉树T的深度 if(!T) return 0;//如果是空树,深度为0,递归结束 else{ int m = Depth(T->lchild); //递归计算左子树的深度为m int n =

weixin_46899589的博客 936

CMN-700组件全解析:从XP路由器到HN-F主节点的实战配置指南

本文深入解析Arm CMN-700片上网络IP的核心组件与实战配置。重点剖析了XP网格路由器的拓扑规划与CHI通道管理,以及HN-F全一致性主节点在维护缓存一致性、管理SLC和地址映射中的关键作用。通过一个12×12网格的配置案例,为硬件工程师提供了从组件布局、地址映射到性能调优的系统级设计指南。

weixin_29313423的博客 281

INCA基础教程

以软件自带Demo为例记录INCA学习过程,主要内容包括测量与标定。

yunqianrui的博客 6万+

数据结构作业之求叶子数,深度和二叉树的复制

数据结构作业,求叶子数,深度和二叉树的复制 #include <stdio.h> #include <stdlib.h> typedef struct binode { char data; struct binode *lchild,*rchild; }Binode,*Bitree; typedef struct snode { Bitree *data; int...

氧化钙的博客 226

推荐系统(1):推荐系统评测

对于可以离线优化的指标,我个人的看法是应该在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用一个数学公式表达,离线实验的优化目标是:最大化预测准确度使得 覆盖率 > A多样性 > B新颖性 > C其中,A、B、C的取值应该视不同的应用而定。

数据不会骗人 2526

1-4 二叉树求深度和叶子数

该题目要求实现两个函数来计算二叉树的深度和叶子节点数。摘要如下: 二叉树深度计算:使用非递归方法,通过栈结构实现层次遍历,记录每个节点的深度并维护最大深度值。空树深度为0。 叶子节点计数:同样采用非递归的栈遍历方式,统计同时没有左右子树的节点数量即为叶子节点数。空树返回0。 实现特点: 自定义栈结构存储节点和深度信息 避免递归可能导致的栈溢出问题 时间复杂度为O(n),需要完整遍历整棵树 两个函数均采用迭代方式实现,适用于大规模二叉树计算,满足题目要求的效率和内存限制。

2301_80684112的博客 467

Metal ECO实战:如何在不修改底层掩模的情况下修复芯片时序问题

本文深入探讨了Metal ECO技术在芯片设计中的应用,这是一种在不修改底层晶体管掩模的前提下,仅通过调整金属连线和替换预置填充单元来修复时序问题的“微创手术”。文章详细解析了其原理、适用场景、关键操作流程与命令,并分享了实战中的高级技巧与常见陷阱,为面临流片前时序违例的工程师提供了宝贵的修复指南。

wdx0123456的博客 430

Windows10 Qt下用MINGW 编译VTK-8.1.0

1. 材料准备(1) 下载VTK-8.1.0: https://www.vtk.org/download/(2) 下载TIFF库: http://gnuwin32.sourceforge.net/packages/tiff.htm(直接安装即可,注意选择路径不包含中文字符)2. 安装: (1) cmake配置: a. Module下配置:勾选下图所示的六项 b. Build 配置:勾选这里能够在b...

hit1524468的专栏 3891

【算法导论】求二叉树的叶子数和深度

二叉树的叶子数和深度 二叉树的遍历算法是许多二叉树运算的算法设计的基础,因此遍历算法的应用很广泛。下面以遍历算法求二叉树的叶子数和深度为例,来加深对于二叉树遍历算法的理解。 1. 统计二叉树中的叶子结点数 因为叶子结点是二叉树中那些左孩子和右孩子均不存在的结点,所以可在二叉树的遍历过程中,对这种特殊结点进行计数,来完成对叶子结点数的统计。这个统计可在任何一种遍历方式下给出,下面是利用中序遍历

青峰碧陋室 5912

《Python星球日记》 第72天:问答系统与信息检索

《Python星球日记》 第72天:问答系统与信息检索,在前面的日子里,我们学习了自然语言处理的基础知识,包括文本预处理、词向量、Transformer架构和各种预训练模型。今天,我们将探索问答系统这一NLP的重要应用,以及如何结合信息检索技术构建智能问答系统。

Code_流苏:在代码中寻诗意,在实践中觅真知 1072

二叉树求深度和叶子数(20 分)

编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 函数接口定义: int GetDepthOfBiTree ( BiTree T); int LeafCount(BiTree T); 其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 裁判测试程序样例: //头文件包含 #include #include #include /

HHHHHHep的博客 2997

MIKE水动力笔记3_岸线及水深数据之根据遥感影像绘制岸线的方法

通过遥感影像自己绘制岸线来制作岸线数据,这种方法获取的岸线及水深数据精度很高,且可以根据自己的研究需要进行灵活处理。

晏长街的博客 1万+

Allegro负片层不显示反盘的原因和解决办法

在用Allegro做PCB设计的时候,负片设计是较为常用的一种方式,有时会出现打开负片层却看不到反盘的情况,如下图。如何才能看到反盘显示的效果,具体操作如下。负片层不显示反盘的原因和解决办法。L2层仍然只能看到盘。

weixin_54787054的博客 2160

6-1 二叉树求深度和叶子数 (20 分)

编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 函数接口定义: int GetDepthOfBiTree ( BiTree T); int LeafCount(BiTree T);    其中T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 裁判测试程序样例: //头文件包含 #include<...

aeymp589524的博客 870

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

6-5 二叉树求深度和叶子数

编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 其中 是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 输入样例: 输出样例: 答案:...

m0_61049596的博客 311

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何求一棵二叉树深度和叶子数(递归)C++版

(1)求一棵二叉树的深度用递归比较简单,求一棵二叉树的深度可以递归定义为:       若为空树,则深度为0;       否则,比较它的左子树的深度和它的右子树的深度,如果左子树的深度大于右子树,则树的深度=左子树+1,反之,则树的深度=右子树+1; 源程序如下: template int BiTree::countHighOfBiTree(BiTreeNode *currentNod

苍茫大地的专栏 2711

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

6-4 二叉树求深度和叶子数 分数 10

【代码】6-4 二叉树求深度和叶子数 分数 10。

Ape's IT Blog 862

6-4 二叉树求深度和叶子数(20 分)

6-4 二叉树求深度和叶子数(20 分) 编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 函数接口定义: int GetDepthOfBiTree ( BiTree T); int LeafCount(BiTree T); 其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 裁判测试程序样例: //头文件

你的你的都是你的的博客 2597
上一篇: 求组合数!
下一篇: 二叉树的非递归遍历
Sancean
博客等级 码龄6年 2472粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值