1、二叉樹---->字串 序列化
2、字串----->二叉樹 反序列化
1、根據先序遍歷序列化
2、根據中序遍歷序列化
3、根據後序遍歷序列化
4、按層序列化
二叉樹被記錄成檔案的過程叫做二叉樹的序列化,通過檔案內容重建原來二叉樹的過程叫作二叉樹的反序列化。
例題:給定一顆二叉樹的頭結點head,並已知二叉樹節點值的型別為32位整型。請設計一種二叉樹序列化和反序列化的方案,並用**實現。
1、假設序列化結果為str,初始時str未空字串。
2、先序遍歷二叉樹時如果遇到空節點,在str末尾加上「#!」;
3、如何遇到不為空的節點,假設節點值為3.就在str的末尾加上「3!」;
這棵二叉樹通過先序遍歷得到的結果:str="12!3!#!#!#!"
用特殊字元表示乙個二叉樹節點值的結束的意義:保證不會產生歧義。
1、選用什麼樣的遍歷方式序列化,就選用什麼樣的方式反序列化。
2、一顆二叉樹序列化的結果是唯一的,唯一的結果生成的二叉樹也是唯一的。
str="12!3!#!#!#!"
values=["12","3","#","#","#"]
按層遍歷的方式對二叉樹進行序列化
1、用佇列來進行二叉樹的按層遍歷,即寬度優先遍歷。
2、除了訪問結點的順序是按層遍歷之外,對結果字串的處理,與之前介紹的處理方式一樣。
3、反序列化過程同理
序列化 反序列化二叉樹
設計乙個演算法能夠實現序列化和反序列化一棵二叉樹 注意,不是二叉搜尋樹bst 這裡的序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。前一篇文章儲存二叉搜尋樹到檔案中 解決了儲存一棵二叉搜尋樹到檔案中的問題,但是由於本題目的意思是要把一棵二叉樹儲存到檔案中並...
序列化和反序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹。基本思想很簡單,序列化就是用某一種遍歷方法將二叉樹元素儲存在字串陣列中,當然要乙個個元素分離,分得清誰是誰。反序列化就是把儲存在字串陣列中的元素進行重構,使之成為二叉樹。我們不妨選擇前序遍歷的思想進行搜尋與重構。本題的關鍵是如何對元素進行儲存,可以放在...
序列化和反序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...