二叉樹的序列化和反序列化

2021-09-12 20:21:54 字數 900 閱讀 7224

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 這裡的序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。前一篇文章儲存二叉搜尋樹到檔案中 解決了儲存一棵二叉搜尋樹到檔案中的問題,但是由於本題目的意思是要把一棵二叉樹儲存到檔案中並...

序列化和反序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。基本思想很簡單,序列化就是用某一種遍歷方法將二叉樹元素儲存在字串陣列中,當然要乙個個元素分離,分得清誰是誰。反序列化就是把儲存在字串陣列中的元素進行重構,使之成為二叉樹。我們不妨選擇前序遍歷的思想進行搜尋與重構。本題的關鍵是如何對元素進行儲存,可以放在...

序列化和反序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...