二叉樹(shù)的序列化和反序列化

在程序里構(gòu)造的二叉樹(shù),其實(shí)存在于內(nèi)存當(dāng)中。邏輯結(jié)構(gòu)可以用紙筆畫(huà)出。

很多時(shí)候,我們希望把二叉樹(shù)以文件的形式記錄下來(lái),這樣一來(lái),下次想重構(gòu)二叉樹(shù),

我們就可以憑借文件中的記錄將整棵二叉樹(shù)還原出來(lái)。

把二叉樹(shù)記錄成文件的過(guò)程,叫做二叉樹(shù)的序列化過(guò)程。(亦稱(chēng)二叉樹(shù)的持久化過(guò)程)

把文件中的記錄還原成二叉樹(shù)的過(guò)程,成為二叉樹(shù)的反序列化過(guò)程。



問(wèn)題1:



“#”表示節(jié)點(diǎn)為空,值不存在;“!”表示一個(gè)值的結(jié)束



value=["12","3","#","#","#"]

Str=12 ! 3 ! # ! # ! # !

!用來(lái)標(biāo)記一個(gè)值的結(jié)束,如果不標(biāo)記的話,會(huì)出現(xiàn)歧義。


問(wèn)題2:一棵二叉樹(shù)通過(guò)先序遍歷的得到的結(jié)果,如何進(jìn)行反序列化。


遍歷到節(jié)點(diǎn)3的左半邊的孩子的時(shí)候,它為空,那么就沒(méi)有子孩子,進(jìn)入右邊的子孩子,它為空,那么他就沒(méi)有子孩子,所以回到12,遍歷12的右孩子,此時(shí)沒(méi)有多余的字符可以使用,所以可以結(jié)束了。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容