都用層級遍歷。
詳情見書p257
/**
* definition for a binary tree node.
* public class treenode
* }*/public
class
codec
sb.(cur.val)
.(sep)
;/*****************/
q.offer
(cur.left)
; q.
offer
(cur.right);}
}//去掉最後的","
sb.deletecharat
(sb.
length()
-1);
return sb.
tostring()
;}// 層級遍歷 反序列化
public treenode deserialize
(string data)
//去掉一下
data.
substring(1
, data.
length()
);string[
] nodes = data.
split
(sep)
;//第乙個元素就是root的值
treenode root =
newtreenode
(integer.
parseint
(nodes[0]
));//bfs模板
queue
q =newlinkedlist
<
>()
; q.
offer
(root)
;while
(!q.
isempty()
)else
// 父節點對應的右側子節點的值
string right = nodes[i++];
if(!right.
equals
("null"))
else}}
return root;}}
// your codec object will be instantiated and called as such:
// codec codec = new codec();
// codec.deserialize(codec.serialize(root));
劍指Offer 37 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 例 樹 1 2 3 4 5 6 序列化 1,2,4,3,5,6,容易發現序列化其實就是帶none的前序遍歷。所以題目就是完成乙個前序遍歷將節點值存入列表,遍歷列表按前序生成一棵二叉樹。時間複雜度 o n 空間複雜度 o n from datstru i...
劍指offer37 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...
《劍指offer》 37 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹。示例 你可以將以下二叉樹 1 2 3 4 5 序列化為 1,2,3,null,null,4,5 層序遍歷,使用乙個佇列輔助queue 的 push pop front to string複雜度 o時間複雜度 o n 空間複雜度 o n definiti...