請實現兩個函式,分別用來序列化和反序列化二叉樹
二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點(#),以 ! 表示乙個結點值的結束(value!)。
二叉樹的反序列化是指:根據某種遍歷順序得到的序列化字串結果str,重構二叉樹。
/**
* 前序序列化
* 為空則#,兩數之間間隔用!
* * @param head
* @return
*/public string serialize
(treenode root)
string res = root.val +
"!";
res +=
serialize
(root.left)
; res +=
serialize
(root.right)
;return res;
}
怎麼序列化,就怎麼反序列化
/**
* 從前序序列化字串重建整個二叉樹
* * @param str
* @return
*/public
static treenode deserialize
(string str)
return
reconbypreorder
(queue);}
public
static treenode reconbypreorder
(queue
queue)
//重建頭結點和左右子樹
node head =
newtreenode
(integer.
valueof
(value));
head.left =
reconbypreorder
(queue)
; head.right =
reconbypreorder
(queue)
;return head;
}
61 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 思路一 選用vectorarr作為輔助,最後轉為int 和char 的資料型別,由於 不方便表示,因此用乙個不會出現的數0x23333代替。方法上是使用遞迴的先序遍歷。一 struct treenode class solution treenode ...
61 序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 思路 層次遍歷,非遞迴。其實是二叉樹的層次遍歷,對應於寬度優先搜尋,bfs。二叉樹的序列化,即給定二叉樹的根結點,按照某種遍歷方式將所有結點鏈結為乙個陣列或者字串。反序列化,即根據給定的序列重新恢復一棵二叉樹。例如一棵二叉樹 1 2 3 nu...
61 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...