在程序里構(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é)束了。