面試題37 序列化二叉樹

2021-10-11 07:24:15 字數 1400 閱讀 4564

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

如:將樹序列化為字串 “[1,2,3,null,null,4,5]”

還要將字串反序列化為二叉樹

序列化方法

佇列進行層次遍歷,把結點一個個加入到結果集中

反序列化方法

根據二叉樹結點之間的運算關係進行求解,若結點 cur 的下標為 x ,那麼其左子結點下標為 2 * x + 1,右子節點的下標為 2 * x + 2。雖然知道了結點下標的關係,但是還是需要遍歷樹,需要用佇列來模擬。

public

class

codec

stringbuilder res =

newstringbuilder

("[");

queue

queue =

newlinkedlist

<

>()

; queue.

offer

(root)

;while

(!queue.

isempty()

)else

} res.

deletecharat

(res.

length()

-1);

res.

("]");

return res.

tostring()

;}// decodes your encoded data to tree.

public treenode deserialize

(string data)

string[

] vals = data.

substring(1

, data.

length()

-1).

split

(",");

treenode root =

newtreenode

(integer.

parseint

(vals[0]

)); queue

queue =

newlinkedlist

<

>()

; queue.

offer

(root)

;int i =1;

while

(!queue.

isempty()

) i++;if

(!vals[i]

.equals

("null"))

i++;}

return root;

}}

面試題37 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。演算法思想 根據前序遍歷規則完成序列化與反序列化。所謂序列化指的是遍歷二叉樹為字串 所謂反序列化指的是依據字串重新構造成二叉樹。依據前序遍歷序列來序列化二叉樹,因為前序遍歷序列是從根結點開始的。當在遍歷二叉樹時碰到null指標時,這些null指標...

面試題37 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。序列化 我們可以按照樹的前序遍歷的方式,將樹中的資料讀出放到一個序列裡。這裡,對於結點是null的,也要表示出來,用以區分,這裡用 作為null結點,對於非null的結點,就取出它們的值放入序列,另外,各個值之間用,隔離開,方便區分。反序列化 根據前面...

面試題37 序列化二叉樹

輸入一棵二叉樹,將其序列化為char 並且支援反序列化為二叉樹。解題思路 執行結果沒問題,但是未通過所有測試案例。include include include include include listnode.h include treenode.h include graph.h using n...

《劍指offer》面試題37 序列化二叉樹

思路 1.使用前序遍歷來序列化二叉樹,當碰到子節點為null的時候,用特殊字元 來表示。public class 37 serializebinarytrees 序列化 public string serialize treenode root private void serialize tree...

劍指offer 面試題37 序列化二叉樹

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

劍指offer 面試題37 序列化二叉樹

面試題37.序列化二叉樹 請實現兩個函式,分別用來序列化和反序列化二叉樹。示例 你可以將以下二叉樹 1 2 3 4 5序列化為 1,2,3,null,null,4,5 class codec def serialize self,root if not root return queue colle...

面試題62 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。參考 序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。struct btnode 序列化 void serialize btnode root,ostream out 將結點的值寫入 outserial...

Q37序列化二叉樹

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

二叉樹25 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹 思路 前面tree4已經研究過了二叉樹的序列化和反序列化問題,對於序列化和反序列化,預設就是使用先序遍歷來進行的,且無論是空節點還是非空的結點都需要進行遍歷,對於空節點通常標記位 每個結點值的結束使用 來進行,oj一般不使用 public cla...

61 序列化二叉樹

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