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

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

1.对于树转二叉树:

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

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

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

2.对于森林转二叉树:

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

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

猜你喜欢

转载自blog.csdn.net/KK_2018/article/details/107623211