JZ61 序列化二叉樹

2022-09-19 04:12:12 字數 741 閱讀 4124

請實現兩個函式,分別用來序列化和反序列化二叉樹,不對序列化之後的字串進行約束,但要求能夠根據序列化之後的字串重新構造出一棵與原二叉樹相同的樹。

輸入:

返回值:

基於先序遍歷,把所有結點的 val 儲存到字串中(用空格間隔開每個結點得到 val ),對於子結點為空的,用 「#」 標識也儲存到字串中,這就是序列化的過程。

然後是逆序列化,從頭開始讀字串,因為已經用空格分開了,所以每個連在一起的字元都代表乙個結點。首先第乙個字元(數字或 # 後面不再重複,統一用字元代替)是根節點,下乙個是根節點的左結點,下下個是根節點的右結點。如果字元是數字,說明該結點存在,返回乙個以該值為 val 的結點;如果是 # ,說明該結點不存在返回null。

做的時候犯了錯誤,沒有把逆序列化的引數提出來,所以即使函式裡修改了但由於遞迴,後面還是原來的樣子,導致結果出錯。

public

class

solution

res += root.val +

" ";

serialize

(root.left)

;serialize

(root.right)

;return res;

}treenode

deserialize

(string _str)

treenode

fun(

)}

JZ61 序列化二叉樹

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

61 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 思路一 選用vectorarr作為輔助,最後轉為int 和char 的資料型別,由於 不方便表示,因此用乙個不會出現的數0x23333代替。方法上是使用遞迴的先序遍歷。一 struct treenode class solution treenode ...

61 序列化二叉樹

題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 思路 層次遍歷,非遞迴。其實是二叉樹的層次遍歷,對應於寬度優先搜尋,bfs。二叉樹的序列化,即給定二叉樹的根結點,按照某種遍歷方式將所有結點鏈結為乙個陣列或者字串。反序列化,即根據給定的序列重新恢復一棵二叉樹。例如一棵二叉樹 1 2 3 nu...