劍指 37 序列化二叉樹 難度困難

2021-10-20 20:10:37 字數 1043 閱讀 1252

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

示例:你可以將以下二叉樹:

1/ \

2 3/ \

4 5序列化為 「[1,2,3,null,null,4,5]」

根據題目描述,序列化的內容和層次遍歷是一致的,這裡當節點不存在時記為"null",注意對於題目中的二叉樹,按照序列化函式,結果應是:

「[1,2,3,null,null,4,5,null,null,null,null]」

實質是根據層次遍歷結果重建二叉樹,建立到當前節點時,同時借助佇列儲存當前節點對應的左右子節點,以便於建立二叉樹的下一層。

/**

* definition for a binary tree node.

* function treenode(val)

*//**

* encodes a tree to a single string.

* * @param root

* @return

*/var serialize = function(root) else

}//去掉最後乙個逗號

res = res.slice(0, res.length-1);

res = res + "]";

return res;

};/**

* decodes your encoded data to tree.

* * @param data

* @return

*/var deserialize = function(data)

let i = 1;

while(queue.length > 0)

i++;

if(arr[i] != "null")

i++;

}return root;

};/**

* your functions will be called as such:

* deserialize(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...