六:二叉树中第k层节点个数与二叉树叶子节点个数

求二叉树叶子节点的个数 && 求第K层的节点个数 求二叉树叶子节点的个数 思路: 1.如果根节点为NULL时,则是空树,返回0; 2.根节点不为空时,如果根节点的左右子树均为空,则该二叉树中只有一个节点,即返回1; 3.叶子节点的个数=左子树叶子节点数+右子树叶子节点数; int _GetNodeyezi(Node* root) //叶子节点的个数 { if (root == NULL) { return 0; 阅读详情

二叉树中第k层节点个数


递归解法:

(1)如果二叉树为空或者k<1返回0

(2)如果二叉树不为空并且k==1,返回1

(3)如果二叉树不为空且k>1,返回左子树中k-1层的节点个数与右子树k-1层节点个数之和


代码如下:

int GetNodeNumKthLevel(BinaryTreeNode *pRoot, int k) 

{ 

   if(pRoot == NULL || k < 1) 

       return 0; 

   if(k == 1) 

       return 1; 


   int numLeft = GetNodeNumKthLevel(pRoot->m_pLeft, k-1); // 左子树中k-1层的节点个数 

   int numRight = GetNodeNumKthLevel(pRoot->m_pRight, k-1); // 右子树中k-1层的节点个数 

   return (numLeft + numRight); 

}


二叉树叶子节点个数


递归方式

(1)如果给定节点pRoot为NULL,则是空树,叶子节点为0,返回0;

(2)如果给定节点pRoot左右子树均为NULL,则是叶子节点,且叶子节点数为1,返回1;

(3)如果给定节点pRoot左右子树不都为NULL,则不是叶子节点,以pRoot为根节点的子树叶子节点数=pRoot左子树叶子节点数+pRoot右子树叶子节点数

 

代码如下

int  GetLeafNum(BinaryTreeNode *pRoot)

{

    if( pRoot ==NULL )

        return0;

    if(pRoot->m_pLeft == NULL && pRoot->m_pRight == NULL )

        return1;

 

    return (GetLeafNum( pRoot->m_pLeft) + GetLeafNum ( pRoot->m_pRight) );

}


非递归方式:

用非递归便利的方式遍历二叉树,便利的同时,判断当前节点是否为叶子节点,如果是,计数器计数。

二叉树的节点个数以及高度详解(附图解) 本文介绍二叉树的节点个数以及高度以及各自的递归展开图!如果我的博客对你有所帮助记得三连支持一下,感谢大家的支持! 阅读详情

相关推荐

二叉树相关(1计算节点个数,2计算叶子结点个数,3求二叉树高度,求K层结点个数,4找那个值所在节点的指针)

二叉树相关(1计算节点个数,2计算叶子结点个数,3求二叉树高度,求K层结点个数,4找那个值所在节点的指针)

aitexuexue的博客 1835

【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度

这篇文章详细介绍了 二叉树递归方法求其节点总个数、叶子节点个数、第K层节点个数、深度,通过递归展开图,由浅入深地讲解递归方法的过程,看完一定会对二叉树的递归过程有更深层次的掌握。

m0_65679465的博客 1万+

(1)二叉树的建立 (2)求出二叉树的高度 (3)求出二叉树结点个数 (4)先序遍历递归实现 (5)先序遍历非递归实现 (6)求出二叉树叶子结点个数

(1)二叉树的建立 (2)求出二叉树的高度 (3)求出二叉树结点个数 (4)先序遍历递归实现 (5)先序遍历非递归实现 (6)求出二叉树叶子结点个数

求二叉树第K层节点的个数和二叉树中叶子节点数

1 求二叉树第K层节点的个数 由于二叉树特殊的性质,因此大部分二叉树的问题都可以通过递归的方法来解决。 求二叉树第K层节点的个数,可以想到层次遍历的方法,但是这个问题也可以通过递归的方法来解决,代码如下: int GetNodeNumK(Node *root,int k) { if(!root||k<1)return 0; //应该还要确定k不大于最大的层数,应该在调用此函数之前确认这一点,这里不再判断 if(k==1)return 1; return GetN

李志杰的博客 3222

嵌入式状态机编程-QP状态机框架与常见状态机方法

状态机基本术语 现态:是指当前所处的状态。 条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。 传统有限状态机Fsm实现方法 如图,是一个定时计数器,计数器存在两种状态,一种为设置状态,一种为计时状态 设

qq_36969440的博客 9665

北京联通IPTV组播实战:OpenWRT软路由配置全解析

本文详细解析了在北京联通IPTV环境下,利用OpenWRT软路由和udpxy工具实现组播转单播的实战配置。内容涵盖网络接口设置、防火墙规则、udpxy安装配置、直播源M3U文件处理以及全平台播放指南,帮助用户无需机顶盒即可在家庭局域网内任何设备上流畅观看电视直播。

weixin_29313547的博客 1410

二叉树结点个数、叶子节点个数、第K层节点数、高度

其实解决二叉树有关的问题少不了要用递归,我们在用递归的时候要想想树的五种形式是否都满足,以确定终止条件即可。 求二叉树的结点个数 空树返回0,其他返回左子树节点数+右子树节点数+1 //求二叉树的结点个数 int GetSize(BNode *root) { if (root == NULL) { return 0; } return GetSize(root-&amp;gt;left...

L_R 2753

Vue2项目实战:vue2-org-tree实现动态组织架构图

本文详细介绍了如何在Vue2项目中使用vue2-org-tree组件实现动态、可交互的组织架构图。内容涵盖从快速安装、基础渲染到核心功能实战,包括水平布局、节点展开折叠、响应式数据绑定、深度自定义节点内容以及事件处理。同时提供了性能优化、样式覆盖等避坑指南,并通过一个完整的企业级Demo展示了如何打造功能丰富的架构图,助力高效开发后台管理系统。

weixin_28040125的博客 522

二叉树的节点个数、叶子节点个数、第k层的节点个数

https://blog.youkuaiyun.com/universe_ant/article/details/72993214 class BinaryTreeNode { int val; BinaryTreeNode left = null; BinaryTreeNode right = null; } public class NodesStatistics { /** ...

不远远方 1941

Windows下Colmap编译安装全攻略:从Boost到CUDA的避坑指南

本文详细介绍了在Windows系统下编译安装Colmap三维重建工具的完整流程与实战经验。针对Boost库版本兼容性、CUDA与Visual Studio的版本匹配等常见难题提供了具体的避坑指南和解决方案,帮助开发者高效完成从环境配置到最终部署的全过程。

weixin_28235513的博客 199

第五章-AllData集成DataSophon作为数据平台功能

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。全新会员商业版 X 微信群:https://docs.qq.com/doc/DVHlkSEtvVXVCdEFo

AllDataDC的博客 1638

数据结构中,满二叉树、结点、根节点、叶子节点,是什么?

满二叉树:指深度为k且含有2的k次方-1个节点的二叉树。特点:每层节点数都是最大节点数。 每个数字都叫节点,7-14这些叫叶子节点(没有子节点),根节点就是树最顶端的节点。 ...

weixin_45211381的博客 6685

环形平滑标签(Circular Smooth Label, CSL)技术详解

环形平滑标签(CSL)是一种优化算法,旨在解决旋转目标检测中角度预测的边界问题。通过将角度回归转化为分类任务,并利用窗口函数平滑标签分布,CSL有效处理了角度周期性的梯度突变问题。其核心原理包括角度离散化和平滑标签编码,通过高斯、矩形、三角等窗口函数生成概率分布。CSL在技术实现上涉及标签转换流程、模型结构调整和损失函数优化,显著提升了检测精度和稳定性。在DOTA数据集上的实验表明,CSL在mAP和角度误差方面优于传统方法。应用场景包括遥感图像分析、自动驾驶和工业质检,部署时需注意旋转NMS编译和ONNX导

浩瀚之水的专栏 640

【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法

二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法

luhaoran814的博客 4547

【软考】系统集成项目管理工程师(一)信息化知识

软考中级——系统集成项目管理工程师备考干货第一章:信息化知识。

商务合作 | 共同学习 | 携手共进 9万+

【YOLOv8改进[Conv]】使用OREPA助力V8更优秀

使用OREPA助力V8更优秀,降低训练成本,在不引入任何推理时间成本的情况下提高深度模型的性能。

静谧、淡雅 1918

二叉树求节点个数及高度问题【图文详解】

本文讲解如何求二叉树结点个数,二叉树叶子节点个数,二叉树第K层结点个数,二叉树的高度(深度),二叉树值为x的结点的方法及其思路。

LiU11e的博客 1907

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【数据结构】二叉树的链式结构,二叉树的遍历,求节点个数以及高度

二叉树遍历,节点个数,高度,创建,销毁

林宇恒的博客 3645

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)

讲解二叉树中如何计算二叉树的结点个数,叶子结点的个数,二叉树的高度,第k层结点的个数,以及在二叉树中如何查找查找目标值.

@初阶牛的博客 6612

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【数据结构】二叉树的基本操作大全,学会二叉树基本操作这一篇就够了:二叉树前序、中序、后序、层次遍历;求二叉树总结点个数,叶子结点个数,二叉树第k层的结点个数;求二叉树的高度;在二叉树中查找值为x的结点

【数据结构】二叉树的基本操作大全,学会二叉树基本操作这一篇就够了:二叉树前序、中序、后序、层次遍历;求二叉树总结点个数,叶子结点个数,二叉树第k层的结点个数;求二叉树的高度;在二叉树中查找值为x的结点

2301_76606232的博客 6023

java-求二叉树节点个数 / 叶子节点个数 / 第k层节点个数

public static int size(Node root) { //求二叉树中节点的个数 //使用先序遍历的方式 if (root == null) { return 0; } //体会递归"拆分问题的过程 //整个树节点个数=根节点的个数(1)+左子树的个数+右子树的个数 return 1+size(root.left)+size(root.ri...

weixin_42440457的博客 3237

二叉树叶子节点的个数和第k层的节点个数——题集八

二叉树叶子节点的个数和第k层的节点个数——题集八        今天,博主没懒丢,所以来分享一下二叉树叶子节点的个数和第k层的节点个数,求数组中数字次数超过数组一半的字符。        求二叉树叶子节点的个数的源程序和运行用例。 源代码如下: #include using namespace std; #include struct TreeNode { int val;

就是爱编程-都有人重名的博客 610

二叉树--求二叉树叶子节点的个数/求二叉树第k层的节点个数。

求二叉树叶子节点的个数思路:左子树的叶子节点的个数+右子树叶子节点的个数int GetLeefNode(BinaryTreeNode<T>* pRoot) { if(pRoot == NULL) return 0; if(pRoot -> left == NULL && pRoot -> right == NULL) return 1;

sayhello_world的博客 1137

【数据结构初阶】--二叉树(五)

本文介绍了二叉树的常用操作实现,包括节点个数计算、叶子节点计数、第k层节点查找、深度计算、节点查找和销毁等。通过递归方式实现了各个功能接口,并提供了完整的代码示例和测试用例。文章详细讲解了每个接口的实现思路,包括节点统计公式(根节点+左右子树)、叶子节点判断条件、递归参数传递技巧等。所有功能都经过测试验证,代码存放在Tree.h、Tree.c和test.c文件中。最后提示后续将继续实现完全二叉树判断和层序遍历功能。

会当凌绝顶,一览众山小 1万+
上一篇: 五:二叉树中和为某一直的路径
下一篇: 七:重建二叉树(根据先序遍历(或者后序遍历)和中序遍历重建二叉树)
day__day__up
博客等级 码龄11年 15粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值