鍍金池/ 問答/人工智能  C  C++/ 將一棵二叉樹擴(kuò)充為滿二叉樹

將一棵二叉樹擴(kuò)充為滿二叉樹

我只想到一個方法,先計算層數(shù),然后遞歸往下補(bǔ),但是感覺效率太低了,請問有沒有好一點的方法?

回答
編輯回答
替身

樓主的意思是將二叉樹的空節(jié)點也表示出來嗎?比如說:

               1
              / \
                 3
                / \
               4   5

表示成

               1
             /   \
           nil    3
           / \   / \
          nilnil4  5
          

這樣嗎。
個人想法滿二叉樹可以用數(shù)組保存,那么樓主可以將數(shù)組將二叉樹擴(kuò)充為滿二叉樹

2017年3月28日 23:36
編輯回答
老梗

滿二叉樹最適合線性存儲,所以不必拘泥于原先的存儲方法。而且從線性結(jié)構(gòu)恢復(fù)為鏈?zhǔn)浇Y(jié)構(gòu)也很容易。
建立一個大小足夠的數(shù)組,或者一個可增長的數(shù)組,每個元素的初值都是空值。
把根節(jié)點存儲在下標(biāo)0的位置;若節(jié)點存儲在了下標(biāo)k的位置,那么其左孩子存儲在2k+1的位置,右孩子存儲在第2k+2的位置。

2017年8月21日 00:26