数据结构习题:设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有多少个

设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有多少个

森林转二叉树:
  1. 将森林中每棵树转换成相应的二叉树;
  2. 第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根结点的右孩子,当所有二叉树连起来后,此时,所得二叉树即是森林转换得到的。

在这里插入图片描述

第一步:每棵树转二叉树
在这里插入图片描述
第二步:二叉树合并

在这里插入图片描述

二叉树转森林
  1. 若某结点是其双亲的左孩子则把该结点的右孩子,右孩子的右孩子…都与该结点的双亲结点用线连起来;
  2. 删除原二叉树中所有的双亲结点与右孩子结点间的连线;
  3. 整理上两步所得的树/森林,使之结构层次分明。

本题思路:(非终端节点即非叶子结点)

右指针域为空个数 = 总的空指针域个数 - 左指针域为空的个数

  1. 题目非终端结点为n,那么假设设森林总结点为m,终端结点(即叶子结点)为 m-n,总指针域就是2*m。

  2. 根据二叉树的特性,可知,在m个结点的二叉链表中,有 m+1 个空指针域。

    除根节点外,每个结点直接都被其父结点指向,使用的指针域为m-1,所以空指针域为 2*m -(m-1) = m+1

  3. 终端结点转化为二叉树后,该结点没有左孩子,左指针域就为空,即m-n

    因为森林转二叉树后,左孩子是第一个孩子,右孩子是兄弟,所以终端结点转化后一定无左孩子,右孩子可能有也可能没有,也就是说转化后有两种可能,一是仍为叶子结点,二为不再是叶子结点,但只有右孩子。

  4. 所以右指针域为空的个数为:m + 1 -(m - n) = n + 1。

    答案即为 n + 1

  • 219
    点赞
  • 447
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论
### 回答1: 由F变换得的二叉树B具有以下性质: 1. F中的每个终端结点在B中对应一个度为2的结点。 2. F中的每个叶子结点在B中对应一个度为1的结点。 3. F中的每个孩子兄弟结构在B中对应一个度为3的结点。 因此,B中总的结点数为2n(每个终端结点对应一个度为2的结点,每个叶子结点对应一个度为1的结点),除了根节点外,每个结点都有一个左孩子和一个右孩子。而根据二叉树的性质,B中的叶子结点的右指针。 因此,B中右指针结点数为n-1。 ### 回答2: F中有n个终端结点,则B中的二叉树有n+1个结点(包括终端结点终端结点)。 二叉树的性质是每个结点的右指针指向其右兄弟结点,如果没有右兄弟结点,则右指针。而F是一个森林,说明结点之间没有兄弟关系,因此B中只能有n个结点有右指针。 所以,B中右指针结点有n个。 ### 回答3: F中有n个终端结点,那么根据二叉树的性质,B中的结点数为2n-1,其中根结点的右指针。 对于其它结点,每个终端结点有两个子结点,包括一个左子结点一个右子结点。而对于右子结点来说,由于变换得到的B是二叉树,所以右子结点的右指针。 综上所述,除了根结点外,B中的终端结点都有一个指针,所以B中右指针结点个数为n-1。 答:B中右指针结点有(n-1)个。
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大da怪i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值