一、求结点总数

1.使用1个局部变量进行计数

有的方法中将左右子树分别进行计算,需要使用到两个变量;若使用全局变量,在对多个二叉树计算节点数时结果会进行累计,不易观察,使用一个全局变量就很方便。

2.思想

结点总数=根结点数+左子树结点数+右结点数;判断根结点不为空,count++,然后再加上左右子树的个数。

3.注意

这里计算的是结点总数,左右子树需要分别进行判断是否为空。

4.代码

//总的结点数
int NodeNum(BTNode *T)
{int count=0;if (T){count++;if (T->Lchild){count+= NodeNum(T->Lchild);}if (T->Rchild){count+= NodeNum(T->Rchild);}return count;}
}

二、求叶子结点总数

1、与计算总结点数的区别

这里需要注意叶子结点的定义,即左孩子和右孩子同时为空,同时也需要同时判断左子树以及右子树。

2、代码

//叶子结点数
int LeavesNodeNum(BTNode* T)
{int count = 0;if (T != NULL){if ((T->Lchild == NULL) && (T->Rchild == NULL)) count++;count+=LeavesNodeNum(T->Lchild);count+=LeavesNodeNum(T->Rchild);}return count;
}

三、运行结果

用二叉链表的先序遍历法建立二叉树,下图是进行测试的二叉树:

运行结果如下:

递归求二叉树的结点总数及叶子结点总数相关推荐

  1. 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历

    前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...

  2. 求二叉树b的结点个数、叶子结点个数

    #include"tree.cpp" //包含了二叉树的基本算法/*-------- 求二叉树b的结点个数.叶子结点个数 ---------*///求二叉树b的结点个数 int N ...

  3. 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m0)个叶子结点,那么该二叉树上的结点总数为( )。

    设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树.假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( ). 正确答案: B   你的答案: B (正确) ...

  4. 叶子结点和分支节点_结点数和叶子结点数有什么区别

    展开全部 结点数和叶子结点数的区别: 叶子结点是度为0的结点,简单的说就是一个二叉树任意一个分支上62616964757a686964616fe58685e5aeb931333365653931的终端 ...

  5. 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)

    叶子结点就是没有孩子结点,所以当当前根结点没有孩子结点的时候,就返回1,就是找到一个叶子结点,然后访问完每个不为空的结点就行,每次访问都是把当前结点的左/右结点作为新的结点,来判断. 求最大深度,也就 ...

  6. 二叉树遍历/先序输出叶子结点

    二叉树遍历 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void Postor ...

  7. 叶子结点和分支节点_一棵深度为5的满二叉树有 个分支结点和 个叶子结点

    展开全部 深度为5的完全二叉树的叶子的确是16个,但是分支结点是15个. 二叉树是指树中节点的62616964757a686964616fe58685e5aeb931333433643036度不大于2 ...

  8. 递归求二叉树的深度_优雅地用堆栈替代递归实现二叉树的深度优先搜索

    本文语言类型:JavaScript 有一个理论是"所有的递归都可以用堆栈实现",道理大家都懂,实现起来怎么样呢? 用js的前端开发者或许都不关心算法,本文尝试用前端们熟悉的编码形式 ...

  9. 计算二叉树的叶子结点个数_C++数据结构二叉树统计总结点个数,叶子结点个数,单分支结点个数,双分支结点个数。...

    很多书上其实都有提到和该算法.但是经过自己的学习我自己想到一个算法.算是结合了其中的优点吧. 算法描述:该算法递归去统计结点个数.值得一提的是该系列算法都是统计根结点以下的符和条件的结点的个数进行了加 ...

最新文章

  1. 基于malloc与free函数的实现代码及分析
  2. webpack打包之clean-webpack-plugin插件 默认下载4.0.0版本的踩坑记录
  3. The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
  4. js禁止粘贴非数字内容
  5. golang 三种接口的定义方式
  6. mysql - 索引_07
  7. 360浏览器打不开qq空间_360浏览器打不开? 60浏览器打不开网页的处理方法(图文)...
  8. 阿里面试官常问的TCP和UDP,你真的弄懂了吗?
  9. nginx location匹配除了一个路径_nginx部署React项目
  10. 2. XML 的用途
  11. 安装.Net Framework提示:无法建立到信任根颁发机构的证书链
  12. lede固件_开源路由器固件OPENWRT/LEDE出现远程代码执行漏洞请尽快升级
  13. 破解Charles抓包工具
  14. 阿里云上克隆代码的两种方法
  15. JS-修改图片颜色值
  16. Windows环境下Nexus的下载与安装
  17. 历年世界10大经济体及GDP列表
  18. Mybatis引用静态常量或者枚举类型
  19. ORA-00600 [ktspgfb-1]
  20. LeetCode908.最小差值

热门文章

  1. 轩辕剑在线(swdol)3D模型浏览器
  2. Robotics: Computational Motion Planning(路径规划)笔记(一):基于图搜索的方法-Grassfire、Dijkstra和A*算法
  3. html打开浏览器协议,通过私有协议在Chrome浏览器网页中打开本地程序
  4. 复合调制引信模型(saopin.slx)
  5. 酷狗与鸿蒙系统,酷狗音乐鸿蒙版app
  6. 错排的递推公式及推导
  7. 抖音搬运次数过多 | 快手怎么检测原创的
  8. Android集成微信支付功能
  9. Discuz!论坛教程之设置帖子内容编辑后自动提升主题
  10. 云计算机上能联机玩游戏不,云电脑是什么原理?为什么能让低配电脑玩大型游戏...