森林和該森林轉換的二叉樹之間非終端節點和右指針域為空的節點關系


問題概述:

設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