对于森林中的所有分支结点(分支结点就是非叶子结点,包含了根节点):其所有孩子都会连到它对应二叉树的左子树中,最左边的孩子成为这棵左子树的根节点,最右边的孩子由于没有兄弟了,转为二叉树后,它的右孩子一定为空。

也就是说,对于森林中的每个分支结点,都存在它的1个孩子结,转换为二叉树后右孩子为空,设森林有n个分支结点,故有n个对应的无右孩子的结点。

再来看二叉树的根节点(见下图中的B结点):它作为分支结点,提供了一个无右孩子的结点(见下图B的黑色箭头);作为根结点本身,在森林中的最右兄弟(见下图中的D结点)转为二叉树后也是没有右孩子的(见下图B的红色箭头),因此根节点总共提供了2个无右孩子的结点。

因此,森林转二叉树,无右孩子的结点由两部分提供:每个分支结点提供一个+根节点额外提供一个,总共有n+1个结点无右孩子。树可以看做只有1棵树的森林,也能得到同样的结论。

一图胜千言,看这张图应该会容易理解一些,黑色箭头指向作为分支结点提供的无右孩子的结点,红色表示根结点作为其本身提供的无右孩子的结点

底图出自王道考研数据结构的这个视频(在10min左右)

森林转二叉树,二叉树无右孩子结点的个数相关推荐

  1. 统计二叉树中只有右孩子的结点个数

    Description 设二叉树的存储结构为二叉链表.在二叉链表中的每个结点由三部分组成:左孩子指针.右孩子指针和结点数据,其中如果一个结点的左右孩子不存在,则对应的指针记录为空,空指针用字符^占位. ...

  2. 求二叉树中第K层结点的个数

    一,问题描述 构建一棵二叉树(不一定是二叉查找树),求出该二叉树中第K层中的结点个数(根结点为第0层) 二,二叉树的构建 定义一个BinaryTree类来表示二叉树,二叉树BinaryTree 又是由 ...

  3. 求二叉树中结点个数代码java_求二叉树中第K层结点的个数

    一,问题描述 构建一棵二叉树(不一定是二叉查找树),求出该二叉树中第K层中的结点个数(根结点为第0层) 二,二叉树的构建 定义一个BinaryTree类来表示二叉树,二叉树BinaryTree 又是由 ...

  4. 树和森林转二叉树,二叉树无右孩子(或右指针域为空)的结点个数计算思路

    前提是知道非终端结点(分支结点)的个数,假设非终端结点的个数为n 1.对于树转二叉树: 因为转化规则是"左孩子右兄弟",如果有n个分支结点,因为每个分支结点都会有孩子,这些孩子都是 ...

  5. 数据结构——简单实现森林转化为二叉树

    孩子兄弟表示法的理解与代码实现|树转化为二叉树 森林是由若干棵树组成,可以将森林中的每棵树的根结点看作是兄弟,由于每棵树都可以转换为二叉树,所以森林也可以转换为二叉树. 将森林转换为二叉树的步骤是: ...

  6. 树:求二叉树的高度和叶子结点数量

    算法代码很简单都是用使用递归计算,大家把递归思想领悟到就ok了. 二叉树高度算法 //求二叉树的高度 采用递归的方式 void GetHeight(BiTree tree, int* heightNu ...

  7. DS二叉树—二叉树结点的最大距离

    题目描述 二叉树两个结点的距离是一个结点经过双亲结点,祖先结点等中间结点到达另一个结点经过的分支数.二叉树结点的最大距离是所有结点间距离的最大值.例如,下图所示二叉树结点最大距离是3,C和D的距离. ...

  8. 设森林F对应的二叉树为B,它有m个结点,B的根p,p右子树结点个数n,森林F中第一棵树的结点个数

    题目:设森林F对应的二叉树为B,它有m个结点,B的根p,p右子树结点个数n,森林F中第一棵树的结点个数 设森林F对应的二叉树为B :它的意思就是将森林F转换为二叉树. 它有m个结点 :这颗二叉树总共有 ...

  9. 找二叉树中给定元素的的左孩子结点_二叉树的实现和操作

    0.定义: 二叉树,是每个节点最多只有两个分之的树结构,通常分之被称作"左子树"或者"右子树":二叉树的分之具有左右次序,且不能随意颠倒. 1.特性 在二叉树的 ...

最新文章

  1. 技术随笔 查找速度最快的Google IP
  2. 出现次数最多的数-CCF模拟
  3. TF:基于CNN(2+1)实现MNIST手写数字图片识别准确率提高到99%
  4. what are the associated papers accepted at the Harvard business review from cambridge
  5. Phalanger---PHP的.NET编译器
  6. php 正则表达式验证金额,php 正则表达式验证数字
  7. Android.mk宏定义demo【转】
  8. evil twin_Evil-Twin框架:用于测试WiFi安全性的工具
  9. C语言课后习题(17)
  10. 源码安装MySQL5.5.20
  11. Bailian2911 受限完全平方数【暴力】
  12. 给ApplicationContext容器中添加组件的方法(@Bean的使用)
  13. 阶段3 1.Mybatis_11.Mybatis的缓存_1 今日课程安排
  14. 小米路由器安装MT工具箱(图文教程)
  15. 史上超全web渗透测试思维导图
  16. Mysql插入JSON串会被去一层转义
  17. excel只显示公式,不显示结果
  18. 律师登台痛批,BSA置身事外
  19. 鼠标光标变成横线了!
  20. WWDC21主题演讲6 月 8 日凌晨1点开幕

热门文章

  1. windows下面安装Python和pip终极教程
  2. solidity修饰符、节省gas技巧
  3. AX寄存器中存放着16位二进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现
  4. linux eclipse乱码,Eclipse项目中乱码问题的解决办法
  5. c语言常用的格式声明,c语言函数声明格式是什么
  6. 并不对劲的线段树套平衡树
  7. 心里的花,我想要带你回家
  8. 闲鱼自动化软件——筛选/发送系统 V20已经测试完毕
  9. js删除字符串中的子串
  10. Simufact环件轧制模拟