61序列化二叉樹

2021-10-03 04:37:11 字數 1158 閱讀 4377

請實現兩個函式,分別用來序列化和反序列化二叉樹

二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點(#),以 ! 表示乙個結點值的結束(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 序列化二叉樹

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