森林和该森林转换的二叉树之间非终端节点和右指针域为空的节点关系


问题概述:

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

分析:

我们首先假设F是由两棵树所构造成的森林。具体示意图如下:

其中,左边为一棵二叉树,右边是一颗三叉树,那么将F转换成二叉树的B为(可通过左子右兄弟表示法来进行转换):

之后,我们可以在F中找到非终端节点为:

1 2 5

以及,我们可以在B中找到右指针域为空的节点为:

4 3 5 8


我们可发现,右指针域为空的节点比非终端节点的个数多了一个。

那么,为什么会这样呢?右指针域为空的节点和非终端节点到底有什么联系呢?

首先,我们可以发现5节点是非终端节点和右指针域节点的公共节点。那么5节点是什么节点呢?可以发现,5节点正是森林中最右端(最后一颗)树的根节点。

其次,我们在右指针域为空的节点序列中找到3 4 和 8 节点,来看看他们在F中都对应着什么样的位置。


仔细观察就可发现:在F中 3 4 和 8 节点所在的层都是由非终端节点1 2 5引出的(3为非终端节点1的子节点、4为非终端节点2的子节点、8为非终端节点5的子节点)。并且,3 4 和 8 节点都是在所在的深度中的最右侧。并且,我们也可以发现,只要树中有一层,那么在当前层中就必然拥有一个右指针域为空的节点。


总结:

首先,我们可以总结出第一条规律:

非终端节点和右指针域节点中必定包含森林中最后一颗树的根节点。


其次,我们就可以总结出第二条规律:

在非终端节点引出的层的节点中就必然拥有一个右指针域为空的节点。且右指针域为空的节点,都在当前深度中所有节点的最右侧。


右指针域为空的节点序列主要由两个部分组成:

森林中最后一棵树的根节点+森林中由非终端节点引出的每一层中最右侧的节点。


并且,非终端节点和右指针域为空的节点关系式为:

设在F中非终端节点数为n个,那么由F转换成的二叉树B中,右指针域的节点个数为:n+1个


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM