前提是知道非终端结点(分支结点)的个数,假设非终端结点的个数为n

1.对于树转二叉树:

因为转化规则是“左孩子右兄弟”,如果有n个分支结点,因为每个分支结点都会有孩子,这些孩子都是兄弟,然而最右边的孩子已经没有右兄弟了,没有右兄弟就意味着在转化为二叉树后这个孩子没有右孩子——即右指针域为空。

又因为每个分支结点都存在一个没有右兄弟的孩子,所以n个分支结点就存在n个没有右兄弟的孩子,在转化为二叉树后这些孩子的右指针域都为空。

最后,不要忘记树的根结点是没有兄弟的,所有在转化为二叉树后根结点的右指针域也为空,所以二叉树中右指针域为空的结点个数是n+1

2.对于森林转二叉树:

和树转二叉树类似,区别在于森林由多棵树组成,第2棵、第3棵……的根结点都是上一棵树的根结点的右孩子。所以在森林转二叉树时,除了最后一棵树之外,其他每棵树的根结点都存在右孩子。

因为森林中非终端结点的个数为n,所以二叉树中右指针域为空的结点个数是n+1

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

  1. 设F是一个森林,B是由F变换来的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有(n+1)个。

    1.设F是一个森林,B是由F变换来的二叉树.若F中有n个非终端结点,则B中右指针域为空的结点有(n+1)个. 解析: 森林中每棵树的根结点从第二个开始依次连接到前一棵树的根的右孩子,因此最后一棵树的根 ...

  2. 哈夫曼树,二叉树结点个数计算

    (1)已知总结点数n,求叶子结点n0 全二叉树中假设度为0,1,2的节点个数分别为n0,n1,n2 n=n0+n1+n2 n0=n2+1 消去n2,得 n=2n0+n1-1 n1只能为0或者1 所以, ...

  3. 求二叉树中度为1的结点个数

    一.问题引入 已知一颗以二叉链表方式存储的二叉树,编写算法计算二叉树的单孩子的结点数.单孩子是指该结点只有左孩子或只有右孩子(其实就是求度为1的结点个数) 二.算法实现 typedef struct ...

  4. 理论基础 —— 二叉树 —— 树、森林、二叉树的转换

    [概述] 从树的孩子兄弟表示法和二叉树的二叉链表表示可以看出,树的孩子兄弟表示法实质上是二叉树的二叉链表存储形式,第一个孩子指针和右兄弟指针分别相当于二叉链表的左孩子指针和右孩子指针. 因此,从物理结 ...

  5. 树、森林、二叉树的转换

    树.森林.二叉树的转换 树变二叉树 树变二叉树的规则:每个结点的左指针指向它的第一个孩子结点.右指针指向它在树中的相邻兄弟结点. 也即:左孩子右兄弟. 根没有兄弟,所以转换以后的树没有右子树. 具体操 ...

  6. 数据结构——树、森林和二叉树之间的转换

    摘自大佬博客http://www.cnblogs.com/zhuyf87/archive/2012/11/04/2753950.html 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. ( ...

  7. 数据结构-----二叉树,树,森林之间的转换

    图片和转换步骤来自这里 本文主要描述具体实现 用一种略微老土的话描述: 二叉树:每一节点最多有2个子节点,左边的叫左节点,右边的叫右节点,自己叫根节点. 树:每个节点的子节点数量不受限制. 森林:由若 ...

  8. [数据结构]树、森林与二叉树之间的相互转换方法

    树.二叉树与森林的相互转换 本文只给出树.森林与二叉树之间的转换方法,而详细的证明过程不在本文讨论范围之内. 树 → 二叉树 在所有兄弟结点之间加一连线. 对每个结点,除了保留与其长子的连线外,去掉该 ...

  9. 树,森林,二叉树的互相转换

    树.森林到二叉树的转换 将树转换为二叉树 树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟.按照这种关系很自然地就将树转换成相应的二叉树: 在所有兄弟结点之间加一连线 对每个结点,除了保留 ...

最新文章

  1. Numpy中的通用函数和聚合
  2. leetcode算法题--统计全为 1 的正方形子矩阵
  3. java2d游戏代码_Java 2D游戏图形
  4. mysql 字符串不限长度,mysql中的字符串长度是否有限制?
  5. [C#]获得线程池中活动的线程数
  6. 用户体验五要素_Kwai竞品分析-用户体验五要素
  7. 苹果是c语言安卓是什么语言,主流app是用什么语言开发的苹果和安卓的主流开...
  8. 十问十答 GPL 许可证
  9. 独行速众行远,BitTitan携手世纪互联蓝云助力用户数据完美迁移
  10. shell 当中的比较运算
  11. RocketMQ 消息队列单机部署及使用
  12. Android第三十八天
  13. psftp文件的上传下载
  14. ubuntu安装rtx
  15. BR8041A02串口烧录PC工具操作说明(BR8041_USB_Programer_V2.0.exe)
  16. rk3399 外接一个usb声卡,同时指定另一个usb声卡做放音功能
  17. java 数字游戏的方法_java实现猜数字游戏
  18. 程序员颈椎病康复指南
  19. python - ffmpeg和moviepy:gif 转mp4
  20. Android 获取通讯录数据

热门文章

  1. DayDayUp:2018年06月07日高考必胜:程序猿的方式祝福莘莘学子高考必胜!
  2. SQL:使用备份向导、SQL命令、导出数据三种方式对已建立的数据库进行备份
  3. 聊一聊深度学习的activation function
  4. python中a=a+2与a+=2的区别
  5. su 与 sudo 区别
  6. SQL:使用 CASE
  7. Anaconda闪退问题
  8. JTAG之IO口作为普通IO口使用时注意事项
  9. EOS资源模型(2)资源使用
  10. C++ Primer 5th笔记(chap 13 拷贝控制) 实例2内存管理